我正在尝试创建一个rails应用,用户可以在其中创建活动并邀请参与者加入并需要您的帮助! 我一直在圈子里,尝试一些事情,但看起来并不正确,这让我疯狂! 我使用的是rails 4.
您将如何设置活动模型?
User
has_many :events through :meeting //for the participants?
has_many :events // for the organizer?
Event
belongs to :user
has_many :participants, class_name: "User"
Participant
belongs to :user
has_many :events through :meeting
Meeting
has_many :participants
has_many :events
这有什么意义吗? 我是否需要参与者模型,或者我只是过度设计它? 我想我有点困惑,组织者是一个用户,参与者也是用户和会议需要组织者和参与者所以不太清楚如何使这项工作...
另请阅读我只有在添加参与者后才能建立会议关系。这会是要走的路吗? 谢谢!
答案 0 :(得分:3)
不,您不需要Participant
型号:
User
has_many :meetings
has_many :events, through: :meetings
Event
has_many :meetings
has_many :participants, through: :meetings, class_name: "User"
Meeting
belongs_to :user
belongs_to :event
从User
的实例中你可以做到:
user.events # => List of Events
从Event
的实例中你可以做到:
event.participants # => List of Users
Ruby Guides中的has_many :through解释与您想要做的类似,请查看。
答案 1 :(得分:1)
首先,您不需要参与者模型。如果我想在会议模型中存储一些额外信息,这就是我将使用的结构。如果没有,您可以直接使用has_and_belongs_to_many。
User
has_many :meetings
has_many :attending_events, through: :meetings, source: "Event" //for the participants
has_many :events // for the event organiser
Event
belongs to :user // The organiser
has_many :meetings
has_many :participants, through: :meetings, source: "User"
Meeting
belongs_to :participant, class_name: "User"
belongs_to :attending_event, class_name: "Event" // Use attending_event_id as foreign_key
答案 2 :(得分:0)
has_many :events
has_many :events #doesn't matter that it's a through table
我过去做过这件事并做过......
User
has_many :invites, dependent: :destroy
has_many :invited_events, through: :invites, source: :event
Event
has_many :invites, dependent: :destroy
has_many :invitees, through: :invites, source: :user
Invite
belongs_to :event
belongs_to :user
然后在邀请连接表中,为creator
设置一个布尔列,以了解该用户是否创建了该事件。您还可以添加一列来显示用户是否接受了邀请(显示参与)。
清洁简单的has_many通过...不复杂=)