Rails ActiveRecord哈希条件

时间:2016-03-16 22:28:42

标签: ruby-on-rails activerecord hash

我真的不明白一些教程代码,尽管在控制台上运行它的等价物(它不起作用)并且没有解释。

这来自Rails指南,我真的很想理解我读到的所有内容

Article.where(author: author)
Author.joins(:articles).where(articles: { author: author })

(作者:作者)部分是我迷路的地方。我的意思是它是自我加入吗?如果是这种情况,我无法在我的控制台上使用相同的语法。

如果作者:作者意味着articles.author和Author.author(由于含糊不清,这会很奇怪。

谢谢,对不起,如果之前已发布过。

1 个答案:

答案 0 :(得分:2)

Article.where(author: author)

^ - 由给定作者选择文章记录。

选择文章记录,其中author_id(可能)列等于“作者的ID”。现在author(在:)之后可以是局部变量,也可以是返回'author'对象的方法调用。无论哪种方式,它可能是响应id方法调用的Author模型类的实例。

Author.joins(:articles).where(articles: { author: author })

^ - 为具有文章的作者选择作者记录。同样,这里的author(在:)之后是局部变量或方法调用。 articles: { author: author }只是在连接上设置一些标准的便捷方式。

获得正确的author变量排序后,在控制台的方法调用链末尾添加.to_sql,以查看正在生成的SQL。这应该可以帮助您了解正在发生的事情。