के माध्यम से कई मैं एक मेरे एप्लिकेशन में संबंध के माध्यम से कई है है है:find_or_create संबंध
शो कई बैंड =>लाइनअप
बैंड के माध्यम से द्वारा अद्वितीय हैं हैं: नाम
class Show < ActiveRecord::Base
attr_accessible :city_id, :title, :dateonly, :timeonly, :image, :canceled, :venue_attributes, :bands_attributes
belongs_to :city
belongs_to :venue
has_many :lineups
has_many :bands, through: :lineups
has_and_belongs_to_many :users
end
class Lineup < ActiveRecord::Base
belongs_to :show
belongs_to :band
end
class Band < ActiveRecord::Base
attr_accessible :name, :website, :country, :state
has_many :lineups
has_many :shows, through: :lineups
validates :name, presence: true
validates_uniqueness_of :name
before_save :titleize_name
private
def titleize_name
self.name = self.name.titleize
end
end
नए बैंड इस तरह बनाए गए हैं:
(मान लीजिए कि हम एक शो रिकॉर्ड पहले से ही एस 1 कहा जाता बचाया है)
> s1.bands.new(name: "Wet Food")
> s1.save
अभी यह केवल पहले से ही मौजूद
जो मॉडल में बचत होगी अगर एक बैंड "गीले खाद्य" का नाम नहीं है इस संबंध में Band.find_or_create करने के लिए सबसे अच्छी जगह है ताकि एक मौजूदा बैंड का उपयोग किया जा सके यदि एक ही नाम वाला कोई मौजूद है?
जहां Band.find_or_create का उपयोग करके एक मौजूदा बैंड का प्रयोग करेंगे? और Band.where (नाम: 'गीले भोजन') का उपयोग करने का प्रयास करें। Band.find_or_create के बजाय first_or_create। – Kuldeep
लाइनअप में बैंड_आईडी है इसलिए मुझे लगता है? – wiredin
तो लाइनअप एक प्रदर्शन के समान है, एक बैंड प्रति शो एक करता है। एक शो में प्रति शो में कई प्रदर्शन होते हैं। –