我正在创建一个简单的事件系统(像物理事件,而不是软件事件)。它的结构如下。每个活动都会有一组空位(想想音乐活动、开场表演、医疗师等等)。每个event_slot都是对一个标签的引用。现在我有以下几点,但我认为这是行不通的:
class Event < ActiveRecord::Base
#id primary key
has_many :event_slots, :order => "sort desc"
has_many :tags, :through => :event_slots
end
# event_slots will be populuated with tag_id
class EventSlot < ActiveRecord::Base
# event_id, tag_id; will also have a sort value to sort these
belongs_to :event
belongs_to :tag
end问题是event_slots将会有一个tag_id。换句话说,我们将添加标签并将它们关联到适当的位置(就像web表单中的物理位置)。
class Tag < ActiveRecord::Base
has_many :event_slots
end我不确定这种建模是否会起作用。对如何实现/改进这一点有什么想法吗?has_many :through似乎没有正确完成。
thx
发布于 2011-11-16 15:04:16
这应该可以很好地工作。我可能会试着使用一个比EventSlots更好的名字,因为它不直观地表示什么。如果它的目标是音乐市场,像Acts这样的东西可能会更有意义。
在事件模型上使用类似accepts_nested_attributes_for的东西可以帮助消除对第二个嵌套模型(Act/EventSlot)的控制器的需要。看看http://railscasts.com/episodes/196-nested-model-form-part-1吧,如果你还没看过的话。
最后,我会考虑不使用你自己的标签系统。已经有大量经过良好测试的gem可以用来提供所需的功能。查看https://www.ruby-toolbox.com/categories/rails_tagging.html,找到一个可能满足您需求的网站。
https://stackoverflow.com/questions/8145630
复制相似问题