ActiveRecord通过与where子句的关联

时间:2014-10-14 17:31:07

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

我想为广告系列的支持者制作一个ActiveRecord关联。

付款表中有3个相关字段:

campaign_id, status, backer_id

如果他们具有以下状态,我只想要支持者: 授权收费发布被拒绝离线

我尝试在Campaign类中执行以下操作:

has_many :backers , through: :payments, -> { where payments.status: %w(authorized charged released rejected offline) }

但它不起作用。我非常感谢任何帮助。如果我需要添加更多信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

您在where上使用的语法看起来不正确。如果您更喜欢使用哈希语法:

has_many :backers, 
  through: :payments, 
  -> { where(payments: { status: %w(authorized charged released rejected offline) }) }

答案 1 :(得分:0)

您可以使用范围:

scope :backers_with_status, ->(backers){ joins(backers).where("payments.status IN (?)" %w(authorized charged released rejected offline)) }