我想为一项活动的支持者建立一个ActiveRecord协会。
有一个包含3个相关字段的Payments表:
campaign_id, status, backer_id我只想要支持者,如果他们有以下状态:授权收费释放拒绝离线
在Campaign类中,我尝试使用以下内容来实现此目的:
has_many :backers , through: :payments, -> { where payments.status: %w(authorized charged released rejected offline) }但它不起作用。如果有任何帮助,我将非常感激。如果我需要添加更多的信息,请让我知道。
发布于 2014-10-15 01:34:17
您在where上使用的语法看起来不正确。如果您喜欢使用散列语法,请使用:
has_many :backers,
through: :payments,
-> { where(payments: { status: %w(authorized charged released rejected offline) }) }发布于 2014-10-15 01:33:53
您可以使用作用域:
scope :backers_with_status, ->(backers){ joins(backers).where("payments.status IN (?)" %w(authorized charged released rejected offline)) }https://stackoverflow.com/questions/26366769
复制相似问题