非常にシンプルなCRUDRails3.2.8アプリでRspecを学習しようとしています。私はマイケル・ハートルの例の一般的なパターンに従っており、部分的に外側のキュウリで適度に成功しています。今、Twilio SMS機能をテストしたいのですが、主に正しい質問をしていないために一塁に到達できないようです。そのため、ここで修正して軌道に戻ることを期待しています。私のアプリには商品と価格の2つのモデルがあり、キュウリのテストで相互作用するため、表示されます。きゅうりのように、相互作用のテストを開始するためのオブジェクトが必要であることを私は知っています。価格コントローラーでは、prices#createメソッドで以下を使用して商品の価格を取得できることがわかります。
@price = @commodity.prices.build(params[:price])
私は最終的に、特定の商品に対して多くの価格を持つ工場を作りたいと思っています。しかし、私は最初に基地に行きたいです。Readmeでのthoughtbotの例に従って、Railsコンソールで次のことを試みています。
FactoryGirl.create(:commodity) do |price|
Commodity.prices.build(attributes_for(:price))
end
結果は次のとおりです。NoMethodError:#うーんの未定義のメソッド `prices'、RspecまたはFactoryGirlのどちらも理解してはいけません。これが私の基本的なfactories.rbです:
FactoryGirl.define do
factory :commodity do
name "corn"
end
sequence :price do |n|
price
date { Time.now }
end
end
これが私の2つのモデルです。
class Commodity < ActiveRecord::Base
attr_accessible :description, :name
has_many :prices
end
MOST_RECENT = 5
class Price < ActiveRecord::Base
attr_accessible :buyer, :date, :price, :quality, :commodity_id
scope :most_recent, lambda { order("id desc").limit(MOST_RECENT) }
belongs_to :commodity
end
これを理解しようとすると、Railsコンソールで簡単に実行できますが、rspecを実行してもエラーが表示されます。しかし、なぜFactoryGirlまたはRspecは、Active Recordで取得した価格方式を使用していないように見えるのでしょうか?明らかに、私は何かを理解していないか、Stack、thanx、samで答えを見つけたでしょう