【发布时间】:2011-06-28 19:37:01
【问题描述】:
我正在尝试实现类似于下面的内容。基本设置是Schedule 模型
class Schedule < ActiveRecord::Base
has_many :events
end
Event 模型随后将属于Schedule。
事件由名称、日期时间、运行时长和 Room
创建事件时从选择列表中选择Room,所有房间都是通过播种或管理界面预先创建的。房间将存储座位数等信息。
我一直在尝试找到一种感觉正确的方法来实现这一点。解决方案似乎介于 habtm 或 has_many :through 之间,但我看不出这种情况需要连接表。
理论上,Event has_one :room 但反向关系不是 belongs_to :event,因为 Room 可以用于许多事件,这也需要外键在 rooms 表上。
我考虑过在事件中使用 room_id 外键在模型中手动处理此问题,然后我可以查询相关的 Room。我认为这会起作用,因为我目前看不到使用 Room 查找所有事件的要求。
class Event < ActiveRecord::Base
belongs_to :schedule
def room
Room.find(room_id)
end
end
到目前为止,我在 Rails 中所做的一切都感觉“正确”,但我在这里提出的所有解决方案都没有,我觉得我错过了一些东西;或者也许我只是期待那额外的魔法。 有没有“Rails”的方式来做到这一点?
【问题讨论】:
标签: ruby-on-rails foreign-keys associations reference