链接多行的轨道';将表中的id转换为另一个表中的单行SQL

链接多行的轨道';将表中的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分配给一行那样直接…)如果您不

我正在制作一个日历应用程序,用户可以在其中创建多个日历,并在Rails中为每个不同的日历添加多个条目。例如,我有下表

入口

历法

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]