想象一下这些模型:
class User
belongs_to :profile
# has email here
end
class Profile
has_one :user
# has first_name,last_name
end
和
class Post
belongs_to :profile
# has title,content
end
现在,我想查询用户电子邮件中的所有帖子(执行 LIKE "%substring%" )。我宁愿不必用 map/selects 编写它,因为我认为它会生成非常低效的代码。我尝试过这样的事情:
class Post
def self.with_user_email_like(email)
self.joins(:profile).where("profile.email LIKE ?","%#{email}%")
end
end
问题是,我知道我应该以某种方式在上述条件下拥有一个 profile.user.email,但我就是无法让它工作。有什么建议么?