Ruby Mutliple与同一模型有许多关系,但列表不同

Ruby Mutliple与同一模型有许多关系,但列表不同,ruby,activerecord,ruby-on-rails-5,rails-activerecord,Ruby,Activerecord,Ruby On Rails 5,Rails Activerecord,我正在努力建立一对多的关系,就像父对象与子对象有3种不同的关系一样。 子对象只能与父对象处于这三种关系中的一种 我有一种感觉,我把它弄混了一点,如果有人能对这个话题有所了解,那么建立这些关系的最佳实践方法是什么呢。 我对rails比较陌生。干杯 我的迁移 add_reference :child_elements, :child_list_a, foreign_key: { to_table: :parent_elements } add_reference :child_elements,

我正在努力建立一对多的关系,就像父对象与子对象有3种不同的关系一样。 子对象只能与父对象处于这三种关系中的一种

我有一种感觉,我把它弄混了一点,如果有人能对这个话题有所了解,那么建立这些关系的最佳实践方法是什么呢。 我对rails比较陌生。干杯

我的迁移

add_reference :child_elements, :child_list_a, foreign_key: { to_table: :parent_elements }

add_reference :child_elements, :child_list_b, foreign_key: { to_table: :parent_elements }

add_reference :child_elements, :child_list_c, foreign_key: { to_table: :parent_elements }

课程:

Child:
属于:子元素列表,类名:“ParentElement”
属于:子元素列表,类名称:“ParentElement”
属于:子元素列表,类名称:“ParentElement”
起源:
有很多:子元素,逆元素:“子元素列表”
有很多:子元素,逆元素:“子元素列表”
有很多:子元素,逆元素:“子元素列表”

我不完全理解您在这里的目标设置。
父项
有3组独立的
子项
关联,但它们不能重叠?每个
子项
必须有3个
父项
s?(或者这些关联是可选的)?总之,一旦你澄清了关于这些关联的规则。。。。一个更干净的设置是使用联接表,例如
parents\u childs
。该表可以有3列:
parent\u id
child\u id
,例如
list\u name
,它可以是
“a”
“b”
“c”
。然后,您可以做
有许多子元素\u a,类\u name:'child',to::parents\u childs,->{where(list\u name:'a')
,您可以在联接表上定义所有必要的数据库约束和/或rails验证,以确保数据完整性。每个孩子都需要一位家长。孩子可能在父母A B或C列表中,但不在A和B->与父母只有一个关系-我希望这会清除它。无论如何,谢谢,我认为你提出的解决方案正是我所需要的。Thanks@TomLord我不能接受你的回答,因为这似乎是一个评论。