需要编程方法来检测has_many和has_one关系

时间:2013-01-16 16:34:25

标签: ruby-on-rails rails-activerecord

我希望能够在ActiveRecord模型对象上检测到[has_one,has_many,belongs_to]关系集的存在。换句话说,我希望能够从模型中的ruby代码中检测它是否具有定义的上述关系之一。

除了强力搜索模型属性之外,还有一些聪明的方法吗?

1 个答案:

答案 0 :(得分:5)

查看Rails'ActiveRecord::Reflection methods以获取您正在寻找的内容。

Model.reflections将返回该模型与关联名称关联的关联的哈希值。 Model.reflect_on_all_associations将返回这些关联的数组,而不包括指定的键。

所以,你可以这样做:

Post.reflections.keys  # => [:comments, :author]
Post.reflections[:comments].marco  # => :has_many
Post.reflections[:author].macro    # => :belongs_to
# etc etc

看看从这些方法返回的数据,你应该能够弄清楚如何做你想做的事。

相关问题