Rails Magic Method model_ids?

时间:2014-09-23 18:26:18

标签: ruby-on-rails ruby ruby-on-rails-4

我试图查找如何只获取评论的ID,这是Post的相关模型。

发布has_many评论

我通过Rails documentation找到了你可以使用.map方法来获取ID。

然而,对于它,我试着做了:

p = Post.find(1)
p.comment_ids #[1,2,3]

它有效!我无法在Rails文档的任何地方找到这种魔术方法。这是获得has_many关系ID的官方支持方式吗?

2 个答案:

答案 0 :(得分:2)

请参阅has_many Association Reference

  

当您声明has_many关联时,声明类会自动获得与该关联相关的16个方法:

其中包括:

collection_singular_ids
collection_singular_ids=ids

答案 1 :(得分:1)

如果你看一下has-many-association的doco,你会找到详细的文档。

collection_singular_ids

  

...这些方法,集合被替换为作为has_many的第一个参数传递的符号,collection_singular被替换为该符号的单数化版本。

根据singularize方法 -

comments.singularize # => comment

在您的情况下,collection_singular已替换为comment。这就是你获得comment_ids方法的方法。

希望它能清除你。