Rails HABTM复选框验证

时间:2011-12-02 02:03:57

标签: ruby-on-rails ruby-on-rails-3

我有两个带有联合表的模型(bowsers_profiles)。 (HABTM)即。

model Profile
  has_and_belongs_to_many :browsers
end

model Browser
  has_and_belongs_to_many :profiles
end

在保存配置文件时,用户可以选择他们使用的浏览器。如何验证它以便用户必须至少选择一个浏览器。验证是否属于配置文件。我猜它会吗?

任何人都可以了解如何实现这一目标。

谢谢,如果可以。

2 个答案:

答案 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

最终的简单解决方案。