Rails关联has_one具有比预期的反向行为

时间:2016-03-11 20:37:17

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

我刚添加了一个新模型Intent,以保存有关想要购买我们产品和服务的用户的信息。

所以我在此表中intent保存了ProductServiceUser的ID。

我创建了一个迁移来引用Intent中的外键,然后添加了以下关联

belongs_to :user
has_one :product
has_one :service

我希望Rails在Intent中搜索product_idservice_id,但相反的情况正在发生:

  

Mysql2 ::错误:未知栏' products.intent_id'在' where子句':   ...

我该如何解决?我选择了错误的关联类型吗?

1 个答案:

答案 0 :(得分:2)

听起来你需要:

belongs_to :user
belongs_to :product
belongs_to :service

然后has_many :intents中的user.rbhas_one :intent以及product.rb中的service.rb。{/ p>

我记得has_one的方式是它取代has_many,因此您可以将它放在通常放置has_many的任何位置。