gpt4 book ai didi

ruby-on-rails-3 - 向 Rails 3 应用程序添加作用域会扰乱 Devise 变量

转载 作者:行者123 更新时间:2023-12-04 07:05:24 25 4
gpt4 key购买 nike

我正在使用 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)}

然后您可以像这样调用作用域(假设您是从 Controller 或 View 调用它):

Answer.user_answers(current_user.id)

更新

我以前没试过这个,但我想你可以做类似下面的事情:

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

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

关于ruby-on-rails-3 - 向 Rails 3 应用程序添加作用域会扰乱 Devise 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com