2017-05-25 158 views
0

我有一个用户模型(用于认证/授权)与关联的配置文件模型(用于关于用户的信息,即头发颜色)。范围关联属性模型

我想创建一个范围来查找所有具有特定属性的用户。即:所有深色头发的人(头发颜色是黑色或棕色),或所有轻头发的人(头发颜色是金色或银色)。

我可以找到所有配置文件的黑头发,但我如何找到关联的用户。

应用程序/模型/ user.rb:

class User < ActiveRecord::Base 
    has_one :profile 

应用程序/模型/ profile.rb

class Profile < ActiveRecord::Base 
    belongs_to :user 
    scope :dark_hair, -> { where('hair_color = ? or hair_color = ?', 'black', 'brown' } 
    scope :light_hair, -> { where('hair_color = ? or hair_color = ?', 'blond', 'silver' } 

所以我能找到的配置文件:

irb>> Profile.dark_hair 

但我做不到没有得到用户(这些都不起作用):

irb>> Profile.dark_hair.user 
irb>> Profile.dark_hair.users 
irb>> User.profile.dark_hair 

我该如何询问我想要的用户?或者范围应该在用户上?我试过,但无法弄清楚如何正确书写它。

回答