考虑到这一点:知道父母从物体
@article = Article.first(:joins => :category)
是否ActiveRecord的提供了返回的任何一个阵列属于类别名称的generique方法?
例如:
@article.name.parents # => ["category"]
感谢
考虑到这一点:知道父母从物体
@article = Article.first(:joins => :category)
是否ActiveRecord的提供了返回的任何一个阵列属于类别名称的generique方法?
例如:
@article.name.parents # => ["category"]
感谢
要找到适合您的机型所有的“belongs_to的”协会,那些都是“父母”,你可以这样做:
YourModel.reflections.select { |name, reflection| reflection.macro == :belongs_to }
当你有两个模型之间的关系,例如,具有一类的文章,你就必须在类别的has_many关系。并在文章中的belongs_to。
class Article < ActiveRecord::Base
belongs_to :category
end
class Category < ActiveRecord::Base
has_many :articles
end
然后,您可以从文章或类别中检索相关对象。
article.category # => The category
category.articles # => The articles
没有“父母”。每个模型都有自己的关系。如果您需要检索一个模型的关系,则必须对其进行定义才能访问它。
谢谢您的回答。 A同意你的观点。但我想用一个通用的方法来做到这一点。如果文章属于类别和杂志,我想提供: @ article.name.parents#=> [“Category”,“Magazine”] 但Article.parents方法不会返回每个belongs_to类,并在测试了一些其他方法后,如: @ article.belongs_to 我得到一个错误(因为belongs_to需要一个参数)或其他信息。并通过尝试以下搜索后: @ article.class.methods.each {| method |开始@ article.class.send(方法)救援真正结束} 我得到一个错误。 – Denis 2009-10-07 20:46:39
我相信这是不可能的,导致Rails在某些类中有belongs_to :something
时正在做的事情,是一种元编程技术,在该类内部添加方法def something
并且它并不真正存储这些“父”类。
好主意!非常感谢。我只是添加一些其他的方法,没关系:Article.reflections.select {| name,reflection | reflection.macro ==:belongs_to} .collect {| table |表[0] .to_s.classify} – Denis 2009-10-08 09:33:32