最佳答案
Ruby 和 Rails 都是新手,但是我现在已经接受了书籍教育(这显然没什么意义,哈哈)。
我有两个模型,事件和用户通过一个表 EventUser 联接
class User < ActiveRecord::Base
has_many :event_users
has_many :events, :through => :event_users
end
class EventUser < ActiveRecord::Base
belongs_to :event
belongs_to :user
#For clarity's sake, EventUser also has a boolean column "active", among others
end
class Event < ActiveRecord::Base
has_many :event_users
has_many :users, :through => :event_users
end
这个项目是一个日历,在这个日历中,我必须跟踪人们注册并在给定的活动中刻出他们的名字。我认为“多对多”是一个很好的方法,但我不能这样做:
u = User.find :first
active_events = u.events.find_by_active(true)
因为事件实际上没有额外的数据,所以 EventUser 模型有:
u = User.find :first
active_events = []
u.event_users.find_by_active(true).do |eu|
active_events << eu.event
end
这似乎与“铁路方式”背道而驰。有没有人能告诉我,今晚(今天早上)这件事困扰了我很长时间?