我有一个属于类别和级别的主题模型。
知道每个主题属于最大5-6级和2-3个类别,每个主题的类别ID和级别ID可以使用数组:PostgreSQL的真值存储在2列中,或者这样做是不好的做法吗?

最佳答案

关系对你有用吗?

class Topic
  has_and_belongs_to_many :levels
  has_and_belongs_to_many :categories
end

class Category
  has_and_belongs_to_many :topics
end

class Level
  has_and_belongs_to_many :topics
end

create_table :categories_topics do |t|
  t.integer :topic_id
  t.integer :category_id
end

create_table :levels_topics do |t|
  t.integer :level_id
  t.integer :topic_id
end

这将使结构看起来像:
|--------|      |--------------|
| Topics | ---> | LevelsTopics |
|--------|      |--------------|
                    ^
|--------|          |
| Levels | ---------|
|--------|


|--------|      |-------------------|
| Topics | ---> | CategoriesTopics  |
|--------|      |-------------------|
                        ^
|------------|          |
| Categories | ---------|
|------------|

这样,每个主题只有一行,每个级别只有一行,每个类别只有一行。关系逻辑将包含在一个新表中,因此所有内容都保持干燥。
阅读更多关于has_and_belongs_to_many

关于ruby-on-rails - Rails 4 Emirates_To将ID存储在数组列中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34277592/

10-15 18:32