我正在尝试为用户事件设置设置我的模型和控制器。这是用户注册活动的多对多设置。我已经创建了连接表('users_events')。
到目前为止,我有:
型号:
class User < ActiveRecord::Base
has_and_belongs_to_many :events, join_table: 'users_events'
end
class Event < ActiveRecord::Base
has_and_belongs_to_many :users, join_table: 'users_events'
end
我希望能够查询用户注册的所有事件。这个查询应该放在哪里?在users_controller或events_controller中?搜索/查找代码会是什么样的?
答案 0 :(得分:1)
首先,users_events违反了rails约定。 Rails按字母顺序推断表名,因此该表应命名为:events_users
然后你可以做以下事情:
current_user.events
或者
event = Event.create!(name: "foo")
current_user.events << event
反之亦然......这样你也不需要在你的模型中提到连接表。
答案 1 :(得分:0)
我能够弄清楚。正如我在对Nikolai的回复中详细阐述的那样,我也有一对多的关系,因为一个事件belongs_to(由用户创建),所以user.events给了我用户创建的事件,而不是它们是什么主治。以下是我解决它的方法。
class User < ActiveRecord::Base
has_many :events
has_and_belongs_to_many :attending_events, class_name: 'Event'
end
class Event < ActiveRecord::Base
belongs_to :user
has_and_belongs_to_many :attendees, class_name: 'User'
end