8
を通じて多くあります。名前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
新しいバンドは次のように作成されます。
は「ウェットフード」という名前のバンドはすでにどのモデルで
存在しない場合にのみ保存されます今
> s1.bands.new(name: "Wet Food")
> s1.save
(私たちはショーのレコードがすでにS1と呼ばれる保存されていると言うことができます)この関係でBand.find_or_createを実行して、同じ名前のバンドが存在する場合は既存のバンドを使用するのに最適な場所です。
ここで、Band.find_or_createを使用して既存の帯域を使用しますか? Band.where(名前: 'Wet Food')を使用しようとすると、Band.find_or_createではなくfirst_or_createが使用されます。 – Kuldeep
のラインアップにはband_idが含まれていますので、私はそこにいると思いますか? – wiredin
ラインナップはパフォーマンスに似ていますが、バンドはショーごとに1つです。ショーごとに複数の公演があります。 –