我有两个带有联合表的模型(bowsers_profiles)。 (HABTM)即。
model Profile
has_and_belongs_to_many :browsers
end
model Browser
has_and_belongs_to_many :profiles
end
在保存配置文件时,用户可以选择他们使用的浏览器。如何验证它以便用户必须至少选择一个浏览器。验证是否属于配置文件。我猜它会吗?
任何人都可以了解如何实现这一目标。
谢谢,如果可以。
答案 0 :(得分:0)
我会将它放在与控制器对应的模型中,该控制器包含您选择关系的操作。例如,如果您在profile#new
和/或profile#edit
操作中选择浏览器,我会将验证放在配置文件模型中。
如果您将代码放在个人资料模型中,请输入以下代码:
validate :must_have_at_least_one_browser
private
def must_have_at_least_one_browser
if browsers.blank?
errors.add(:base, 'You must select at least one browser')
end
end
答案 1 :(得分:0)
我需要做的就是计算HABTM字段的数组元素,即
def must_have_at_least_one_browser
errors.add(:base, 'You must select at least one browser') unless browser_ids.count > 0
end
最终的简单解决方案。