Ruby と Rails はどちらも初心者ですが、今では本で教育を受けています (これはどうやら何の意味もありませんね、笑)。
テーブル EventUser を介して結合された Event と User の 2 つのモデルがあります。
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
これは「レールウェイ」に反するようです。これは今夜(今朝)長い間私を悩ませてきましたか?