Itérer sur chaque enregistrement dans une base de données - Ruby on Rails / ActiveRecord
n00b question. Je suis en train de faire une boucle par tous les Utilisateurs d'enregistrer dans ma base de données. Le pseudo-code pourrait ressembler un peu à quelque chose comme ceci:
def send_notifications
render :nothing => true
# Randomly select Message record from DB
@message = Message.offset(rand(Message.count)).first
random_message = @message.content
@user = User.all.entries.each do
@user = User.find(:id)
number_to_text = ""
@user.number = number_to_text #number is a User's phone number
puts @user.number
end
end
Quelqu'un peut-il me renseigner sur la meilleure approche pour ce faire? Un peu d'aide avec la syntaxe serait beaucoup trop 🙂
- pouvons-nous obtenir un peu plus de fond sur ce que vous essayez d'atteindre. Aller à travers vous, l'utilisateur de la base de données de cette façon semble un peu frais généraux
- C'est mieux si vous obtenez une base de connaissances en Ruby. Vous ne le regretterez pas , pour sûr . De toute façon , dites-nous quel est le but si la boucle ?
- L'envoi d'un SMS à chaque utilisateur de la DB. 'nombre' = un Utilisateur du numéro de téléphone.
- mis à jour le post avec tous le code du contrôleur pour donner plus de contexte.
Vous devez vous connecter pour publier un commentaire.
Ici est la bonne syntaxe pour itérer sur tous les Utilisateurs :
Pour améliorer les performances et de diminuer la charge, utilisez
User.find_each
(voir la doc) au lieu deUser.all
. Notez que l'utilisation defind_each
perd la capacité de tri.Aussi un one-liner pour un même objectif: