【发布时间】:2013-11-23 06:29:26
【问题描述】:
我在运行时收到错误未知属性 id
@user.payments.create(payment_params)
我知道这意味着我的付款表中需要一个 user_id。但是我正在使用多态关联(可能是错误的?)并且我的付款表有一个 payee_id 和一个 payer_id (对于每个“类型”的用户)。在上述方法中,@user 实例是付款人。
以下是支付和用户模型:
class Payment < ActiveRecord::Base
belongs_to :payee, :class_name => 'User', :foreign_key => 'payee_id'
belongs_to :payer, :class_name => 'User', :foreign_key => 'payer_id'
end
class User < ActiveRecord::Base
has_many :payments
end
以及支付控制器中的创建操作:
def create
@user = User.find_or_create_by(user_params)
@payment = @user.payments.create(payment_params)
end
多态关联让我感到困惑。我该如何纠正这个错误?
【问题讨论】:
-
Rails 在支付表中寻找属性
user_id。不是肯定的,但您可能还必须在用户的has_many关系上指定:foreign_key。
标签: ruby-on-rails associations has-many polymorphic-associations