2011-12-02 6 views
0

私はジョイングテーブル(bowsers_profiles)を持つ2つのモデルを持っています。 (HABTM)すなわち、Rails HABTMチェックボックスの有効化

model Profile 
    has_and_belongs_to_many :browsers 
end 

model Browser 
    has_and_belongs_to_many :profiles 
end 

プロファイルを保存すると、ユーザーはどのブラウザを使用するかを選択できます。ユーザーが少なくとも1つのブラウザを選択する必要があるように、どのように検証することができますか。検証はプロフィールに属しますか?私はそれを推測する?

これを達成する方法については、誰でも光を当てることができます。

ありがとうございます。

+0

解決策を見つけましたか? – Preacher

+0

こんにちは。それはあなたが提案したようには機能しませんでした。 – Lee

答えて

0

私が行うために必要なすべてが終わりで

def must_have_at_least_one_browser 
    errors.add(:base, 'You must select at least one browser') unless browser_ids.count > 0 
    end 

シンプルなソリューション、HABTMフィールドすなわちのための配列要素をカウントしたが、 。

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 
関連する問題