2011-09-26 29 views
0

以下是兩個模型:user和user_level。用戶has_many user_levels和用戶級別屬於用戶。如何在rails中檢索給定user_level的用戶

class user < ActiveRecord::Base 
    has_many :user_level 
end 

class UserLevel < ActiveRecord::Base 

    belongs_to :user 
end 

UserLevel.find_by_role('sales')將檢索角色銷售的所有記錄(w/user_id)。如何檢索user_level角色爲'sales'的用戶電子郵件?

謝謝。

回答

0
User.joins(:user_levels).where(:user_levels => { :role => "sales"}).select("email") 

UserLevel.joins(:user).where(:role => "sales").select("email") 

更新

UserLevel.find_by_role("sales").users 
+0

第一個User.joins(:user_levels)起作用。第二個不是。是否有其他方式通過用戶和user_level之間的關聯檢索相同的信息?關聯可能會更簡單。謝謝。 – user938363

+0

順便說一句如何檢索電子郵件和名稱與上面的第一個?看起來select可以選擇一列或所有列。 – user938363

0

你可能有關聯倒退,實際上想:

class User < ActiveRecord::Base 
    belongs_to :user_level 
end 
class UserLevel < ActiveRecord::Base 
    has_many :users 
end 

然後:
@users = UserLevel.find_by_role('sales')。users
然後,您可以迭代@user集合並在迭代中使用電子郵件。

+0

假設問題中的關聯是正確的,如何檢索用戶的電子郵件?每個用戶至少有一個user_level和一個user_level屬於該用戶。答案中的關聯對我來說似乎有點奇怪。謝謝。 – user938363

+0

已正確使用示例更新了2011年11月22日。 –

相關問題