我有公司,每家公司都有多个产品。模型有以下关系 -
类公司<的ActiveRecord :: Base的 has_many:产品 结束 类产品<的ActiveRecord :: Base的 belongs_to:公司 端
我想为每家公司保留1000个产品ID。
所以
我想为每个公司保留Products表的PRIMARY键,而不是使用范围主键和重复ID(因为消费者/公司可以记住产品ID并使用url'... / product / 1000'访问它)
我想到的解决方案 - 我应该创建多个序列(每个公司在创建公司时都会创建一个序列)。默认值为(Company.ID -1)* 1000 + 1。 在为公司创建产品时,使用nextval作为此序列。我确信公司将不会在系统中拥有1000个产品(不太可能)。
你能建议一个更好的方法吗?
答案 0 :(得分:1)
你的计划并不好。如果您有50家公司,每家公司有5个产品,那么现在您的数据库中有50,000行。数据库始终处理此类问题。不要指望您的客户记住数据库ID。让他们轻松找到ID。
你应该在这样的轨道中组织模型:
class Company < ApplicationRecord
has_many :products
end
class Products < ApplicationRecord
belongs_to :company
end
尝试并描绘您的规范变化如何产生新问题,以及您是否会因为偏离规范而过度使用。在您的情况下,如果一家公司有1001种产品,那么您就为自己创造了更多的工作。