【问题标题】:Find by intermediary attribute in a has_many :through in Rails [duplicate]通过has_many中的中间属性查找:通过Rails [重复]
【发布时间】:2011-11-23 17:01:49
【问题描述】:

可能重复:
Rails has_many :through Find by Extra Attributes in Join Model

我的模型中有以下多对多设置:

class Project < ActiveRecord::Base
  has_many :projectcollaborations
  has_many :partners, :through => :projectcollaborations, :source => :partner
end

class Partner < ActiveRecord::Base
  has_many :projectcollaborations
  has_many :projects, :through => :projectcollaborations, :source => :project
end

class Projectcollaboration < ActiveRecord::Base
  belongs_to :project
  belongs_to :partner
end

我可以访问:

@partner = Partner.first
@partner.projects
@partner.projectcollaborations.find_by_myrole('creator')
....

现在我如何访问 @partner 的所有项目,在我的多对多关系表中有 myrole 创建者?

【问题讨论】:

  • 请为您的关联和类名使用正确的大小写:即project_collaborations,而不是projectcollaborationsProjectCollaboration,而不是Projectcollaboration。这使您的代码对所有相关人员都更具可读性。

标签: ruby-on-rails many-to-many relationships


【解决方案1】:
@collaborations = @partner.projectcollaborations.includes(:projects).find_all_by_myrole('creator')
@projects = @collaborations.map &:project

也许还有另一种更漂亮、更优雅的方式,但我就是这样做的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多