我正在尝试实现类似于下面的内容。基本设置是Schedule
模型
class Schedule < ActiveRecord::Base
has_many :events
end
Event
模型将属于Schedule
。
事件由名称,日期时间,运行长度和Room
创建事件时,从选择列表中选择Room
,所有房间都是通过种子或管理界面预先创建的。会议室将存储座位数等信息。
我一直在努力寻找一种实现这一目标的方法。解决方案似乎介于habtm或has_many之间:但是我看不出需要为这种情况提供连接表。
从理论上讲,事件has_one :room
但反向关系不是belongs_to :event
,因为房间可以用于许多事件,这也需要外键在房间表上。
我考虑过在事件中使用room_id外键在模型中手动处理,然后我可以查询相关的房间。我认为这样可行,因为我目前看不到使用房间查找所有事件的要求。
class Event < ActiveRecord::Base
belongs_to :schedule
def room
Room.find(room_id)
end
end
到目前为止,我在Rails中所做的一切都感觉“正确”,但我在这里提出的所有解决方案都没有,我觉得我错过了一些东西;或者我只是期待额外的魔力。 是否有“Rails”方法可以做到这一点?
答案 0 :(得分:4)
在这种情况下,事件是否只有与Rooms的belongs_to关系?
class Event < ActiveRecord::Base
belongs_to :schedule
belongs_to :room
end
如果您从架构的角度考虑它,您的“事件”表几乎肯定有“schedule_id”和“room_id”列。
关系的另一面是房间有很多活动。