我想为广告系列的支持者制作一个ActiveRecord关联。
付款表中有3个相关字段:
campaign_id, status, backer_id
如果他们具有以下状态,我只想要支持者: 授权收费发布被拒绝离线
我尝试在Campaign类中执行以下操作:
has_many :backers , through: :payments, -> { where payments.status: %w(authorized charged released rejected offline) }
但它不起作用。我非常感谢任何帮助。如果我需要添加更多信息,请告诉我。
答案 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)) }