链接多行的轨道';将表中的id转换为另一个表中的单行SQL
我正在制作一个日历应用程序,用户可以在其中创建多个日历,并在Rails中为每个不同的日历添加多个条目。例如,我有下表 入口 历法链接多行的轨道';将表中的id转换为另一个表中的单行SQL,sql,ruby-on-rails,ruby,Sql,Ruby On Rails,Ruby,我正在制作一个日历应用程序,用户可以在其中创建多个日历,并在Rails中为每个不同的日历添加多个条目。例如,我有下表 入口 历法 id entry_id ---------------- 1 1, 3 2 2 3 1, 2, 3 如果我想从日历中的一行(数组?)中获取所有条目,那么关联/解决方案是什么?如何向该行添加新条目?(我查看了has_和_-allows_-to_-many关联,但它似乎需要第三个表,它不像将多个ID分配给一行那样直接…)如果您不
id entry_id
----------------
1 1, 3
2 2
3 1, 2, 3
如果我想从日历中的一行(数组?)中获取所有条目,那么关联/解决方案是什么?如何向该行添加新条目?(我查看了has_和_-allows_-to_-many关联,但它似乎需要第三个表,它不像将多个ID分配给一行那样直接…)如果您不想以后进行疯狂的连接,您可能需要一个连接表。是的,第三张桌子是个好主意
class Entry < ActiveRecord::Base
has_many :calendars, through: :scheduling
end
class Calendar < ActiveRecord::Base
has_many :entries, through: scheduling
end
class Scheduling < ActiveRecord::Base
belongs_to :entry
belongs_to :calendar
end
您的ActiveRecord查询如下所示:
entires
id:integer
description:string
calendars
id:integer
schedulings
id:integer
calendar_id:integer
entry_id:integer
Calendar.find(3).entries.ids #=> [1, 2, 3]
Entry.find(1).calendars.ids #=> [1, 3]
导轨也提供了一个很好的例子:
你说哪一行不如一行分配多个ID直接是什么意思?嗯。。我不知道如何解释,但我在某个论坛的数据库中看到过一些表格,其中一个论坛行可能包含多个子论坛的id,id之间用逗号分隔。也许它已经过时了,现在最好的方法是使用第三个表,其中包含两行之间的链接…我明白了。。谢谢你的回答!
Calendar.find(3).entries.ids #=> [1, 2, 3]
Entry.find(1).calendars.ids #=> [1, 3]