关系:
Team
有很多Rosters
Team
有很多Announcements
Announcement
有一个AnnouncementRoster
创建Announcement
时,用户必须为其分配Roster
(其数据将用于创建新的AnnouncementRoster
)。
我的模特:
class User < ActiveRecord::Base
has_many :roster_players
has_many :rosters, -> { uniq } , :through => :roster_players
has_many :announcement_rosters, -> { uniq } , :through => :announcement_players
end
class Roster < ActiveRecord::Base
has_many :roster_players
has_many :users, -> { uniq }, through: :roster_players
end
class RosterPlayer < ActiveRecord::Base
belongs_to :roster
belongs_to :user
validates :user_id, :uniqueness => { :scope => :roster_id }
end
class Announcement < ActiveRecord::Base
has_one :announcement_roster
end
class AnnouncementRoster < ActiveRecord::Base
has_many :announcement_players
has_many :users, -> { uniq }, through: :announcement_players
end
class AnnouncementPlayer < ActiveRecord::Base
belongs_to :announcement
belongs_to :user
end
我认为我需要不同的关系模型(RosterPlayer
,AnnouncementPlayer
,TaskPlayer
等),因为不同的关系需要不同的属性。例如:AnnouncementPlayer有read?
列,TaskPlayer有progress
列,RosterPlayer有captain?
列。
问题:
确保AnnouncementRoster
与其复制的Roster
“同步”的最佳方法是什么?换句话说,如果复制的Roster's
数据已更改(添加或删除用户),则相应的AnnouncementRoster
应相应更新。
答案 0 :(得分:1)
您想要决定的策略是:
after_save
和after_update
,让Rails推送更改您选择的其中一项实际上取决于您的环境,应用程序指标,弹性等。
对不起,这是一个概述答案。其他人可以通过赞成这方面的内容进行讨论,并根据尚未说明的信息帮助您做出决定。