向 rails 3 应用程序添加范围会扰乱 Designing 变量



我正在使用Devise进行身份验证。它的变量"current_user"在应用程序中广泛使用,没有问题。然后,我在名为"Answer"的模型中添加了以下范围

scope :user_answers, where (:user_id => current_user.id)

此范围的结果是名为"问题"的模型中另一个范围的一部分

scope :qs_w_user_ans, joins(:questions) & Answer.user_answers

从那以后,我收到以下错误:

undefined local variable or method `current_user'

为什么会这样呢?

谢谢。

正如Zabba所提到的,您无法访问模型中的current_user。不过,您可以将参数传递到您的范围内:

scope :user_answers, lambda {|user_id| where(:user_id => user_id)}

然后你可以像这样调用范围(假设你从控制器或视图调用它(:

Answer.user_answers(current_user.id)

更新

我以前没有尝试过这个,但我想你可以做如下的事情:

scope :qs_w_user_ans, lambda {|user_id| joins(:questions) & Answer.user_answers(user_id)}

您必须用 lambda 包装外部作用域,并在调用 qs_w_user_ans 时传入current_user.id。然后从该lambda user_id传递给user_answers,而本身使用lambda来接收该参数。用我之前的答案试试这个(总共两个 lambda(。

相关内容

  • 没有找到相关文章

最新更新