使类可以在委托属性上过滤

时间:2016-05-16 13:23:48

标签: ruby-on-rails ruby-on-rails-4

我在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

我正在尝试创建一个查询,可以查找显示与某个用户链接的所有Quotation对象。我试着用以下方法做到这一点:

  # Scope to filter based on user
  scope :_user, -> (user_id) { where user: user_id }
然而,这会返回&#34;未定义的方法`user&#39;&#34;,你知道我做错了吗?

1 个答案:

答案 0 :(得分:2)

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

def user
  request.user
end

相反,您可以在查询中包含请求:

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