Ruby on rails Rails 5-关联模型,子模型由多个
在正确的结社顺序上有问题 我有一个Ruby on rails Rails 5-关联模型,子模型由多个,ruby-on-rails,associations,Ruby On Rails,Associations,在正确的结社顺序上有问题 我有一个CharacteraCharClass,所有CharClasse都有一套可用的Perks。角色可以选择要获得的特权和要忽略的特权 我将手动填充CharClass表和Perks表中的set-in-stone选项 感谢Benjamin在下面的评论,我修改了我的模式,使其看起来像这样(减去不相关的内容): 这解决了所有数据错误,但有一点冗余。由于每个问题都有一个答案,这确实满足了我最初的需求。接下来我会再问一个问题。我的想法是关于你可能想要如何设置你的桌子,但我认为这
Character
aCharClass
,所有CharClass
e都有一套可用的Perks
。角色
可以选择要获得的特权
和要忽略的特权
我将手动填充CharClass
表和Perks
表中的set-in-stone选项
感谢Benjamin在下面的评论,我修改了我的模式,使其看起来像这样(减去不相关的内容):
这解决了所有数据错误,但有一点冗余。由于每个问题都有一个答案,这确实满足了我最初的需求。接下来我会再问一个问题。我的想法是关于你可能想要如何设置你的桌子,但我认为这里没有一个明显的最佳答案。这和你想说的差不多,但我会讲一些语义学
CharClass
has_many :class_perks
has_many :characters
ClassPerk
belongs_to :char_class # Use intermediate table if you want has_many/has_many
has_many :character_perks # between CharClass and ClassPerk for perk overlap
Character
belongs_to :char_class
has_many :class_perks, :through => char_class
has_many :character_perks
CharacterPerk
belongs_to :character
belongs_to :class_perk
此设置允许您根据职业检查角色可以获得哪些特权,并且仍然可以将角色的进度与职业特权分开
有些吹毛求疵的事情:
- 属于表示此表/模型包含相关模型的外部id。我认为角色引用类更有意义
- 您遇到的几个错误似乎与问题没有直接关系,但可能是奇怪的表格设置的副作用。我不介意在这里讨论它们,但有些人可能会认为它们应该是单独的帖子。显示更多的模式可能比迁移更有益
- 关于save错误,如果您使用的是强参数,请记住允许char_class_id,并且输入名称与表上的属性匹配
CharClass
has_many :class_perks
has_many :characters
ClassPerk
belongs_to :char_class # Use intermediate table if you want has_many/has_many
has_many :character_perks # between CharClass and ClassPerk for perk overlap
Character
belongs_to :char_class
has_many :class_perks, :through => char_class
has_many :character_perks
CharacterPerk
belongs_to :character
belongs_to :class_perk