假设我有三个包含用户、角色和事件的模型。每个用户可以有许多角色(例如吉他手、贝斯手等),并且每个角色可以有一个或多个用户(例如 Ted 可以充当吉他手或贝斯手)来完成它。
我正在为一个教堂乐队创建一个轮播应用程序,这意味着每个活动在乐队中都有一个角色,并且每个活动都有一个用户来填补每个角色。我想知道有什么方法可以在模型中强制执行这种关系,或者我是否必须在应用程序的其他地方执行此操作。提前感谢您的帮助!
假设我有三个包含用户、角色和事件的模型。每个用户可以有许多角色(例如吉他手、贝斯手等),并且每个角色可以有一个或多个用户(例如 Ted 可以充当吉他手或贝斯手)来完成它。
我正在为一个教堂乐队创建一个轮播应用程序,这意味着每个活动在乐队中都有一个角色,并且每个活动都有一个用户来填补每个角色。我想知道有什么方法可以在模型中强制执行这种关系,或者我是否必须在应用程序的其他地方执行此操作。提前感谢您的帮助!
事件应该有很多用户通过 EventParticipation 和 EventParticipation 应该
belongs_to :user
belongs_to :event
对 user_id 进行一些唯一性验证,添加一个 role_id 并根据需要进行范围唯一性验证。
我会在模型中使用自定义验证方法来做到这一点。这是一些未经测试的代码,但类似于
class ChurchEvent < ActiveRecord::Base
validate :has_one_role_each
def has_one_role_each
errors.add(:base, "only one of each role allowed") if duplicate_roles?
end
private
def duplicate_roles?
# assuming band_roles is array of roles for this event
band_roles.uniq.count != band_roles.count
end
end
和用户类似的东西。