我有三个模型
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']
。即它返回所有使用 :class_name
键声明的 associations
。
关于ruby-on-rails - Rails - 从 has_many => 通过关联作为字符串获取名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31350458/