0
我有一个属于支付模型的用户模型。因此,创建用户时,其(年)属性用于查询Pay模型并返回包含费率的对象。一切正常,如果我通过查询:RAILS || ActiveRecord :: AssociationTypeMismatch:新模型对象上的错误
class User < ApplicationRecord
belongs_to :pay
end
* CONTROLLER ACTIONS *
@user = User.new(user_params)
@user.pay = Pay.find(1)
=> #< Pay object returned with attributes....>
但下面返回的ActiveRecord :: AssociationTypeMismatch:......这是
@user = User.new(user_params)
@user.pay = Pay.where("years = ?", @user.years) #FAILS
也尝试过收费:: ActiveRecord_Relation的实例下面....
@user.pay = Pay.where(years: @user.years)
@user.pay = Pay.where(years: params[:years]
即使输入查询字符串....
@user.pay = Pay.where(years: "3")
所以查询返回的是ActiveRecord_Relation的实例而不是AssociationType?
谢谢冰人。我试图追加.limit(1),但仍然失败,所以我感到非常紧张。你的解决方案可以工作,并且我学习了更多关于ActiveRecord的知识。队友的欢呼声! – DawgOnKing
很高兴工作,祝你好运。 – Iceman
FWIW'.limit(1)'仍然返回一个_one_ ActiveRecord关系,它可以被认为是一个不是ActiveRecord的数组。 – whodini9