【问题标题】:Create a has_many association where a condition applies to the primary table in ruby on rails?创建一个 has_many 关联,其中条件适用于 ruby​​ on rails 中的主表?
【发布时间】:2012-12-26 16:52:25
【问题描述】:

我有authentications,其中有很多groups,使用uid 作为primary_key,organizer_id 作为foreign_key,没问题。

uid 的作用域是provider 属性的唯一范围。我想确保我的关联只获取groups,其中authentication.provider == 'meetup'。我试过了:

has_many :groups, :primary_key => "uid", :foreign_key => "organizer_id", :conditions => {:provider => "meetup"}

但这只是试图找到所有groupsprovider == "meetup"

如何在主表authentications 上指定条件?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activerecord associations


    【解决方案1】:

    试试:

    has_many :groups, :primary_key => "uid", :foreign_key => "organizer_id", :include => :authentication, :conditions => {:authentication => {:provider => "meetup"}}
    

    更新:

    如果组 belongs_to 使用“organizer_id”作为 foreign_key 进行身份验证,那么只需:

    Group.includes(:authentication).where(:authentication => {:provider => "meetup"})
    

    【讨论】:

    • 返回:Failure/Error: @authentication.groups.should include(@group) } ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: authentication.provider:
    • 此关联属于身份验证?如果是这样,则关联逻辑中有一些奇怪的东西,或者我错过了一些东西。为什么要使用身份验证条件搜索仅属于一个(?)身份验证的组?如果身份验证不匹配怎么办?展示你的模型以使其清晰......
    • 好的...是的。我可以从小组的一侧做到这一点。我只是想看看是否有一种优雅的方式可以让它与协会一起工作。我想我也可以为Authentication 编写一个名为groups的方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 2013-06-21
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多