0
class Article < ActiveRecord::Base
  attr_accessible :console, :ean, :title, :title_spaceless
  has_many :dealers, :through => :units
end

class Dealer < ActiveRecord::Base
  attr_accessible :adress, :name, :website
  has_many :articles, :through => :units
  validates :name, :uniqueness => { :case_sensitive => false }
end

class Unit < ActiveRecord::Base
  attr_accessible :article_id, :dealer_id, :note, :price
  belongs_to :article
  belongs_to :unit 
end

ディーラー、アーティクル、ユニットを同時に作成するにはどうすればよいですか?

私が最初に試したのはこのようなものでしたが、それは完全に間違っていると思われます。

@dealer = Dealer.find_or_create_by_name("Surugaya")
@dealer.article.create(:title => game.content, :title_spaceless => game.content.delete(' '), :console => "SNES").unit.create(:article_id => @dealer.article.article_id, :units_id => @dealer.article.unit_id, :price => game.price) 
4

1 に答える 1

1

まず、クラスにunits関連付けがありません。Articleこれを修正する必要があります。

has_many :units

「同時に」とは、同じデータベーストランザクションを意味していると思います。あなたはこれを試すことができます:

Dealer.transaction do
  @dealer = Dealer.find_or_create_by_name("Surugaya")
  @article = @dealer.articles.create!(
      :title => game.content, 
      :title_spaceless => game.content.delete(' '), 
      :console => "SNES"
  )
  @unit = @article.units.create!(:price => game.price)
end
于 2013-01-01T22:49:00.573 に答える