在Rails 4中我正在使用:
class Ticket < ActiveRecord::Base
has_many :request_attendances, dependent: :destroy
has_many :attending_request_attendances, -> {
where("data->>'rsvp_completed' = 'true'")
.where("data->>'is_coming' = 'true'")
}, class_name: 'RequestAttendance'
end
在我的门票模型中
和
class RequestAttendance < ActiveRecord::Base
belongs_to :tickets, inverse_of: :request_attendances
scope :is_coming, -> { where("data->>'is_coming' = 'true'")}
scope :rsvp_completed, -> { where("data->>'rsvp_completed' = 'true'")}
end
在我的RequestAttendance模型中
我想做这样的事情
has_many :attending_request_attendances, -> {
:is_coming
:rsvp_completed
}, class_name: 'RequestAttendance'
重用我在RequestAttendance模型中创建的范围。
这样的事情是可能的,目前它不起作用,给我以下错误:
未定义的方法`除了&#39; for:rsvp_completed:Symbol
如果我在这里添加一个has_many块的位置:
has_many :attending_request_attendances, -> {
:is_coming
:rsvp_completed
where("data->>'rsvp_completed' = 'true'")
}, class_name: 'RequestAttendance'
它没有错误,但它也不使用范围子句。
答案 0 :(得分:2)
您可以在这样的关联中将范围链接在一起:
has_many :attending_request_attendances, -> {
is_coming.rsvp_completed
}, class_name: 'RequestAttendance'
答案 1 :(得分:0)
您已在RequestAttendance模型中添加以下代码
scope :is_coming, -> { where("data->>'is_coming' = 'true'")}
scope :rsvp_completed, -> { where("data->>'rsvp_completed' = 'true'")}
如果您在Tickets Model
中使用以下代码class Tickets < ActiveRecord::Base
has_many :RequestAttendance
end
范围可用于has_many关联,因此它将使用is_coming&#39;来获取所有记录。 =&#39; true&#39;和&#34;数据 - &gt;&gt;&#39; rsvp_completed&#39; =&#39; true&#39;&#34;
您可以使用对象ticket.requestAttendance.is_coming.rsvp_completed
获取它这是你的期望还是如果我误解了请解释