2016-05-16 59 views
0

我ROR4有一个应用程序,它具有以下型号过滤:使一个类上委托的属性

# Quotation model 
class Quotation < ActiveRecord::Base 

    belongs_to :request 
    has_one :booking 
    has_one :review 
    has_one :coupon, class_name: 'Coupons::Models::CouponRedemption' 

    delegate :artist, to: :request 
    delegate :user, to: :request 
end 

我试图做一个查询,可以发现表明,以某一链接的所有报价的对象用户。我试图做到以下几点:

# Scope to filter based on user 
    scope :_user, -> (user_id) { where user: user_id } 

然而这返回“未定义的方法`用户'”,你知道我做错了什么吗?

+0

你为什么范围名以下划线开头? – Ilya

+0

不是真的有理由,但我也可以使用它没有下划线。 – hY8vVpf3tyR57Xib

回答

2

引用表中没有用户列。代表团只是将方法交给请求。就像这样:

def user 
    request.user 
end 

相反,你可以在查询请求:

scope :_user, -> (user_id) { includes(:request).where(requests: { user: user_id}) }