gpt4 book ai didi

ruby-on-rails-3 - 在 Rails 3 中使用连接获取数据的范围

转载 作者:行者123 更新时间:2023-12-04 00:55:13 25 4
gpt4 key购买 nike

从 Rails 2 到 Rails 3,我从未如此努力地理解某些东西(副社论)。

无论如何,在 Rails 3 应用程序中,我有以下模型......

用户:

has_many :answers

回答:
belongs_to :user
belongs_to :question
scope :user_answers, where (:user_id => current_user.id)

问题:
has_many :answers
scope :qs_w_user_ans, joins(:questions) & (:user_answers)

我得到的当前错误是“未定义的方法`includes_values' for :user_answers:Symbol”

有一个问题 id 和一个用户 id。每个答案都有 question_id 和 user_id。

我需要通过 id 适当链接用户答案的​​问题。你能告诉我我的模型哪里错了吗?

谢谢。

最佳答案

&运算符(我认为最近已弃用)是 merge 的别名,它允许您基本上合并范围。 :user_answers不是范围,因此您不能使用此方法。

正如 Dinatih 指出的那样,您可以多次调用连接。在这种情况下,为每个连接创建不同的范围不会给您带来太多好处,因此他的方法适合您的情况。

有关范围的更多信息:http://archives.edgerails.info/articles/what-s-new-in-edge-rails/2010/02/23/the-skinny-on-scopes-formerly-named-scope/index.html

更新

对不起,我的误解。 :user_answers是一个范围,但在这种情况下您没有正确调用它。您需要以下内容:

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

合并作用域时,您可以像调用类方法一样调用合并的作用域。

在我链接的文章中,范围 :publishedPost与作用域合并 :publishedUser :
scope :published, lambda {
joins(:posts).group("users.id") & Post.published
}

关于ruby-on-rails-3 - 在 Rails 3 中使用连接获取数据的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874118/

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