我真的不明白一些教程代码,尽管在控制台上运行它的等价物(它不起作用)并且没有解释。
这来自Rails指南,我真的很想理解我读到的所有内容
Article.where(author: author)
Author.joins(:articles).where(articles: { author: author })
(作者:作者)部分是我迷路的地方。我的意思是它是自我加入吗?如果是这种情况,我无法在我的控制台上使用相同的语法。
如果作者:作者意味着articles.author和Author.author(由于含糊不清,这会很奇怪。
谢谢,对不起,如果之前已发布过。
答案 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。这应该可以帮助您了解正在发生的事情。