2011-12-02 83 views
0

我有一个与joinging表(bowsers_profiles)的2个模型。 (HABTM)即。Rails HABTM复选框验证

model Profile 
    has_and_belongs_to_many :browsers 
end 

model Browser 
    has_and_belongs_to_many :profiles 
end 

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

任何人都可以阐明如何实现这一点。

如果可以的话,谢谢。

+0

您是否找到解决方案? – Preacher

+0

嗨,牧师。它不符合你的建议。 – Lee

回答

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 

到底简单的解决方案。

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