Je suis nouveau à rails et rubis.comment faire une boucle dans une collection et de trouver quelque chose dans les rails
J'ai une association has_many entre l'utilisateur et le magasin
ci-dessous est ce que je fais:
@user = User.find_by_userid_and_password("someuser", "12345")
=> #<User id: 1, userid: "someuser", password: "12345",
created_at: "2010-01-25 00:00:00", updated_at: "2010-01-25 00:00:00">
@user.stores
=> [#<Store id: 3, store_id: 3, store_name: "New Store 2",
created_at: "2010-01-25 00:00:00", updated_at: "2010-01-25 00:00:00">,
#<Store id: 5, store_id: 5, store_name: "Store 14th and M",
created_at: "2010-01-25 00:00:00", updated_at: "2010-01-25 00:00:00">]
donc en gros je suis d'abord authentifie l'utilisateur et obtenir tous les magasins qui appartient un utilisateur. Pour cela, je reçois une liste. Dans cette liste de hashes je veux savoir si quelque chose est là avec store_id == 4
.
séquentielle je:
@user.stores.first.store_id==4
false
@user.stores.second.store_id==4
false
comment puis-je faire cela dans une boucle? et y a-t-il une meilleure façon de le faire.
Merci. si je fais '@ user.stores.find (6)' puisque 6 n'est pas l'un des id il renvoie une erreur. Comment pourrais-je mettre cela dans une condition si alors? 'if @ user.stores.find (6)! = nil ...' est-ce correct? – mustaine
Vous pouvez faire find_by_id (6) qui retournera un tableau (aucune erreur ne sera levée) et ensuite vérifier pour nil. @ user.stores.find_by_id (6) .first.nil? – Jonathan
Puisque nil est faux dans Ruby, vous pouvez simplement faire 'if @ user.stores.find (6) ...', vous n'avez pas besoin de comparer manuellement à zéro puisque vous êtes en train de courir avec une expression vrai/faux . – Eric