我有三种模式
class Mar < ActiveRecord::Base
belongs_to :baz
belongs_to :koo
end
class Baz < ActiveRecord::Base
has_many :other_mars, :class_name => "Mar", :foreign_key => :b
end
class Koo < ActiveRecord::Base
has_many :mars
has_many :bazs, :through => :mars, :source => :baz
end
然后从模型Baz中获取has_many名称作为字符串。在此示例中为“ other_mars”
该解决方案必须使用传递给它的class_name来处理任何类似的has_many关系。
我正在使用Rails 3.2和ruby 1.9
如果我正确理解您的要求,则以下代码会有所帮助
result = Baz.reflect_on_all_associations.collect do |association|
association.name.to_s if association.options[:class_name].present?
end.compact
您的情况是上面的代码['other_mars']
。即它返回所有已associations
声明的:class_name
密钥。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句