我正在寻找在rails中创建LOV模型的最佳实践。
想象一下像2个模型users
和companies
这样简单的东西。两者都有一个字段名type
,因此它们都可以有一个名为user_types
和company_types
的相关表。
如何仅使用一个表来完成这项工作?
答案 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等。但在我看来,这对您的问题来说太过分了。