मैं दो मॉडल हैं: Project
और ProjectDiscipline
:रेल 3: कम से कम एक संघ आइटम के माध्यम से कई है की उपस्थिति को मान्य
class Project < ActiveRecord::Base
has_many :project_disciplinizations, :dependent => :destroy
has_many :project_disciplines, through: :project_disciplinizations
attr_accessible :project_discipline_ids
attr_accessible :project_disciplines_attributes
accepts_nested_attributes_for :project_disciplines, :reject_if => proc { |attributes| attributes['name'].blank? }
end
class ProjectDiscipline < ActiveRecord::Base
attr_accessible :name
has_many :project_disciplinizations, :dependent => :destroy
has_many :projects, through: :project_disciplinizations
end
class ProjectDisciplinization < ActiveRecord::Base
attr_accessible :project_discipline_id, :project_id
belongs_to :project_discipline
belongs_to :project
end
नई/संपादन Project
प्रपत्र पर, मैं विषयों और एक जांच की एक सूची है उनमें से तो उन विषयों चुन सकते हैं हर एक के लिए बॉक्स:
<div class="control-group">
<label class="control-label">Check disciplines that apply</label>
<div class="controls">
<%= f.collection_check_boxes(:project_discipline_ids, ProjectDiscipline.order('name'), :id, :name, {}, {:class => 'checkbox'}) {|input| input.label(:class => 'checkbox') { input.check_box + input.text }} %>
<p class="help-block">You must choose at least one discipline.</p>
</div>
</div>
मैं आवश्यक है कि कम से कम एक अनुशासन चेक किया गया है एक सत्यापन जोड़ना चाहते हैं। मैंने कोशिश की है लेकिन मुझे अभी तक पता नहीं चला है। मैं यह सत्यापन कैसे जोड़ सकता हूं?
क्या आप मेरे उत्तर की समीक्षा कर सकते हैं? – asiniy
यदि आप बाद में अनुशासन को नष्ट करते हैं, तो ऐसा हो सकता है कि किसी परियोजना के पास अब कोई विषय नहीं है और इस प्रकार एक अमान्य स्थिति में है। – wacha
'.empty? 'यहां अधिक उपयुक्त होगा, रिक्त प्रश्न डीबी से रिकॉर्ड लौटाते हैं, खाली' प्रोजेक्ट_डिस्प्लिंस 'से' 1 चुनें 'और' project_disciplines '.'id' = 1 LIMIT 1', जो थोड़ा सा है अधिक कुशल। –