Ruby on rails Rails 3模型:可以创建/更新:association_id=>;association.id,但不是:association=>;协会

Ruby on rails Rails 3模型:可以创建/更新:association_id=>;association.id,但不是:association=>;协会,ruby-on-rails,activerecord,rspec,activemodel,Ruby On Rails,Activerecord,Rspec,Activemodel,这是我经常遇到的问题,我不太清楚为什么。任何建议都值得赞赏: 假设我在商店和书之间有一种关系(书属于商店,商店有很多书) 如果我运行以下代码: shop = Shop.first Book.new(:name => 'Naked People', :shop => shop) 我去拿 ActiveRecord::AssociationTypeMismatch:预计为车间(#70161677495100), 有字符串(#70161654862280) 但是如果我跑 shop = Sh

这是我经常遇到的问题,我不太清楚为什么。任何建议都值得赞赏:

假设我在商店和书之间有一种关系(书属于商店,商店有很多书)

如果我运行以下代码:

shop = Shop.first
Book.new(:name => 'Naked People', :shop => shop)
我去拿

ActiveRecord::AssociationTypeMismatch:预计为车间(#70161677495100), 有字符串(#70161654862280)

但是如果我跑

shop = Shop.first
Book.new(:name => 'Naked People', :shop_id => shop.id)
一切正常

其他事项:

  • 我不认为这是一个容易接近的问题。我已经尝试从两种型号中剥离attr_可访问呼叫…没有变化
  • 我认为这不是协会的问题。从控制台,我可以创建Book.new(:name=>‘裸体人’,:shop=>shop)没问题。目前,从rspec控制器测试来看,一切都不正常

有什么想法吗?我似乎经常遇到这种情况,但我被以下问题难住了:RSpec测试中的解决方案,什么是
Shop。首先
returning?检查-它按预期返回Shop。商店有一个to_的方法,返回self.name…因此商店上的“put”返回商店的名称(“测试商店”)