1
我是rails和ruby的新手。如何通過集合循環並找到軌道中的東西
我有用戶和存儲之間的has_many關聯
下面是我做的:
@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">]
所以基本上我先驗證用戶身份,然後讓用戶所屬的所有門店。爲此我得到一個清單。在那個哈希列表中,我想知道是否有任何與store_id == 4
。
順序我做的:
@user.stores.first.store_id==4
false
@user.stores.second.store_id==4
false
我如何能在一個循環做這個?有沒有更好的方法來做到這一點。
謝謝。如果我做'@ user.stores.find(6)',因爲6不是其中的一個,它會返回一個錯誤。那我怎麼會把這個放在一個if條件呢? 'if @ user.stores.find(6)!= nil ...'那可以嗎? – mustaine 2010-01-26 12:38:49
你可以做find_by_id(6),它將返回一個數組(不會拋出錯誤),然後檢查是否爲零。 @ user.stores.find_by_id(6).first.nil? – Jonathan 2010-01-26 13:23:26
由於nil在Ruby中是錯誤的,所以你可以'if @ user.stores.find(6)...',你不必手動比較nil,因爲你只是用真/假表達式運行。 – Eric 2010-01-26 17:17:16