我有一个模型item has_many ratings
和一个ratings belongs_to item
ratings belongs_to user
我想强制创建项目的用户也对其进行评分。其他用户可以稍后对其进行评级。 item和user在我的模型中没有关联。
我在item_spec中执行以下操作,这在no implicit conversion of Symbol into Integer
下面的@item = Item.new(name: "Item1",
处给出了错误class Item < ActiveRecord::Base
has_many :ratings, dependent: :destroy, inverse_of: :item
accepts_nested_attributes_for :ratings, :allow_destroy => true
validates :name , :length => { minimum: 3 }
validates :category , :length => { minimum: 3 }
validates_presence_of :ratings
end
require 'spec_helper'
describe Item do
before do
@item = Item.new(name: "Item1",
url: "www.item1.com",
full_address: "Item1Address",
city: "Item1City",
country: "Item1Country",
category: "Item1Type",
ratings_attributes: {"rating" => "3", "comment" => "Ahh Good"} )
end
。
factory :item do
before_create do |r|
r.ratings<< FactoryGirl.build(:ratings, item: r )
end
name "Item1"
url "www.Item1.com"
full_address "Item1Address"
city "Item1City"
country "Item1Country"
category "Item1Category"
end
factory :ratings do
rating 3
comment "Its not that bad"
user
end
end
同样使用FactoryGirl我正在做这样的事情
{{1}}
这也不是想要的结果。 任何人都可以帮我解决这个问题。谢谢!
答案 0 :(得分:0)
工作代码,现在测试一些关联顺序有问题,但至少所需的功能正常工作。
factory :item do
name "Item1"
url "www.Item1.com"
full_address "Item1Address"
city "Item1City"
country "Item1Country"
category "Item1Category"
end
factory :ratings, :class => 'Ratings' do
association :item, factory: :item, strategy: :build
user
rating 3
comment "Its not that bad"
end
factory :item_with_rating, parent: :item do
ratings {[FactoryGirl.create(:ratings)]}
end
这是spec文件
require 'spec_helper'
describe Item do
before do
@item = FactoryGirl.create(:item_with_rating)
end
subject { @item }
it { should respond_to(:name) }
it { should respond_to(:url) }
it { should respond_to(:full_address)}
it { should respond_to(:city) }
it { should respond_to(:country) }
it { should respond_to(:category) }
it { should respond_to(:ratings) }
it { should_not respond_to(:type) }
it { should_not respond_to(:user_id) }
it { should be_valid }
项目
的模型文件没有变化