FactoryGirlに問題があります。簡単なフォーラム アプリを作成し、トピックにタグ機能を追加しました。すべて正常に動作しますが、この機能のテストに問題があります。
これは私の工場です:
FactoryGirl.define do
factory :user do
sequence(:name) {|n| "Person #{n}"}
sequence(:email) {|n| "person_#{n}@forumapp.com"}
password "foobar92"
password_confirmation "foobar92"
end
factory :forum do
name "Test Forum"
description "Test Forum Description"
end
factory :tag do
name "Test"
end
factory :topic do
name "Test Topic"
description "Test Topic Description"
forum
user
end
factory :post do
content "Lorem ipsum dolor sit amet"
topic
user
end
end
私の topic_pages_spec では、次のようなことをしています:
let(:tag) {FactoryGirl.create(:tag)}
let(:topic){FactoryGirl.create(:topic, forum: forum, user: user, tags: tag)}
タグとトピックのデータベース スキーマは次のようになります。
create_table "taggings", force: true do |t|
t.integer "tag_id"
t.integer "topic_id"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "taggings", ["tag_id"], name: "index_taggings_on_tag_id", using: :btree
add_index "taggings", ["topic_id"], name: "index_taggings_on_topic_id", using: :btree
create_table "tags", force: true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "topics", force: true do |t|
t.string "name"
t.integer "forum_id", null: false
t.datetime "created_at"
t.datetime "updated_at"
t.integer "user_id", null: false
t.string "description"
end
私のトピックモデルは次のとおりです。
has_many :taggings
has_many :tags, through: :taggings
タグ付けモデル:
belongs_to :tag
belongs_to :topic
タグモデル:
has_many :taggings has_many :topics, through: :taggings
この仕様を実行しようとすると、次のエラーが発生します。
Failure/Error: let!(:topic){FactoryGirl.create(:topic, forum: forum, user: user, tags: tag)}
NoMethodError:
undefined method `each' for #<Tag:0x000000078f7210>
# ./spec/requests/topic_pages_spec.rb:8:in `block (2 levels) in <top (required)>'
この機能をテストする方法がわかりません...