不确定如何在ActiveRecord中建模

时间:2011-11-16 01:45:16

标签: ruby-on-rails ruby-on-rails-3 activerecord

我正在创建一个简单的事件系统(如物理事件,而不是软件事件)。它具有以下结构。每个活动都有一组插槽(想想音乐事件,开场表演,治疗师等......)。每个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

1 个答案:

答案 0 :(得分:0)

这应该可以正常工作。我可能会尝试使用比EventSlots更好的名称,因为它不直观,它代表什么。如果它针对音乐市场,像Acts这样的东西可能更有意义。

在Event模型上使用accept_nested_attributes_for之类的东西可以帮助消除对第二个嵌套模型(Act / EventSlot)的控制器的需求。如果您还没有,请查看http://railscasts.com/episodes/196-nested-model-form-part-1

最后我会考虑不要滚动你自己的标记系统。您可以使用大量经过良好测试的宝石来提供所需的功能。查看https://www.ruby-toolbox.com/categories/rails_tagging.html以找到可能符合您需求的产品。