rails中值列表的最佳实践

时间:2015-05-18 18:55:14

标签: ruby-on-rails activerecord

我正在寻找在rails中创建LOV模型的最佳实践。 想象一下像2个模型userscompanies这样简单的东西。两者都有一个字段名type,因此它们都可以有一个名为user_typescompany_types的相关表。

如何仅使用一个表来完成这项工作?

1 个答案:

答案 0 :(得分:1)

常见的方法是定义UserType和CompanyType模型和表:

class UserType < ActiveRecord::Base
  has_many :users
end

class CompanyType < ActiveRecord::Base
  has_many :companies
end

class User < ActiveRecord::Base
  belongs_to :type, class_name: 'UserType'
end

class Company < ActiveRecord::Base
  belongs_to :type, class_name: 'CompanyType'
end

因此,您有4个表: user_types company_types ,用户,公司。

在下一级,您可以实现STI(单表继承):

class Type < ActiveRecord::Base
end

class UserType < Type
  has_many :users
end

class CompanyType < Type
  has_many :users
end

您需要将“type”列添加到Type model with string type。

在此示例中,您只有 3 表:类型,用户,公司。

您可以通过以下链接了解有关STI的更多信息:http://api.rubyonrails.org/classes/ActiveRecord/Inheritance.html http://api.rubyonrails.org/classes/ActiveRecord/Inheritance/ClassMethods.html

此外,您可以使用其中一个键/值存储类型,例如redis,riak等。但在我看来,这对您的问题来说太过分了。