ruby-on-rails - Rails - 从 has_many => 通过关联作为字符串获取名称

标签 ruby-on-rails ruby activerecord

我有三个模型

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/

相关文章:

php - 有没有办法在 CodeIgniter 中自动返回所有数据库列?

ruby-on-rails - 覆盖 database.yml 的策略?

sql - 如何在 Ruby on Rails 中编写任意 SQL 查询?

ruby-on-rails - 带有 FactoryGirl 显式主题的 RSpec

ruby-on-rails - 为什么我能在 Heroku 看到这么多 worker ?我如何限制其他员工的访问权限?

ruby-on-rails - 常量化通过浏览器提交的参数是不好的做法吗?

ruby-on-rails - 将参数从 as_json 传递到模型

ruby-on-rails - 如何确保 Rails Controller 测试后响应是 JSON,为什么这不是正确的方法?

ruby-on-rails - 在 Ruby 中逐一堆叠

ruby-on-rails - 在我的 Rails 应用程序中,如何将两个对象添加到我的模型中?