我正在尝试学习如何在Rails 5中编写范围。
我有一个用户模型和一个提案模型。协会是:
用户:
has_many :proposals
提案:
belongs_to :user
在我的提案模型中,我试图弄清楚如何编写一个范围来查找属于创建它们的用户的提案。
我在尝试:
scope :proponent, -> { where(user_id: user.id) }
我已尝试了一百万种变体,但我无法找到有效的。
此特定尝试会出现此错误:
2.3.1p112 :001 > Proposal.proponent
NameError: undefined local variable or method `user' for Proposal (call 'Proposal.connection' to establish a connection):Class
我也尝试过:
scope :proponent, -> { where('proposal.user_id = ?', user.id) }
我从这次尝试中得到的错误是:
undefined local variable or method `user' for #<Class:0x007fd3600eb038>
我不知道错误信息是指第一次还是第二次写“用户”。在我的尝试是不正确的。我不知道&#34;呼叫&#39; Proposal.connection&#39;装置&#34 ;.
任何人都可以看到我需要做些什么来检查提案表以找到属于特定用户的提案表吗?
答案 0 :(得分:10)
调用范围时,您需要将JButton
或ActionPerformed
作为参数传递。您可以这样定义:
user
或
user_id
这些确实是一回事。
然后调用它:
scope :proponent, ->(user){ where(user_id: user.id) }
注意这跟说
是一回事def self.proponent(user)
where user_id: user.id
end