【发布时间】:2015-02-03 00:40:53
【问题描述】:
我有两个续集模型user 和event,目前由单个连接表处理。
用户可以被邀请参加活动,这些邀请附加了一个状态;这由另一个连接表处理。
class Event < Sequel::Model(:events)
many_to_many :users
many_to_many :invitations, :join_table => :events_invitations, :right_key => :user_id, :class => :User, :select=>[Sequel.expr(:users).*, :events_invitations__status]
end
class User < Sequel::Model(:users)
many_to_many :events
many_to_many :invitations, :join_table => :events_invitations, :right_key => :event_id, :class => :Event, :select=>[Sequel.expr(:events).*, :events_invitations__status]
end
我能够创建和访问相关的邀请,但从未保存更改(我假设是由于我设置 many_to_many 的方式)
user = User.create(name: "bob")
event = Event.create(title: "super fete")
user.add_event(e)
event.add_invitation(e)
invite = user.invitations.first
# this returns a reference to the event, with the extra status column from the join table
# <Event @values={:id=>1, :title=>"fete", :owner_id=>nil, :user_id=>nil, :status=>"pending"}>
# does not actually save back to the table if I modify it...
invite[:status] = "accepted"
我应该如何对此进行建模,以便能够查看和设置用户和事件的邀请状态?
【问题讨论】:
-
我在另一个问题中回答了stackoverflow.com/a/48139189/676874,您可以在其中看到如何调整many_to_many-relation 以在
add_invittion中添加其他参数。但是要获取数据,您需要一个模型。