【发布时间】:2015-10-15 18:04:43
【问题描述】:
我遇到了关联模型的问题。我的用户有一个嵌套属性,供审阅者使用。用户基本上可以评论另一个人,因此成为评论者并成为被评论的人。
它是这样设置的:
# User
has_many :reviewers
accepts_nested_attributes_for :reviewers
has_many :active_managements, class_name: 'Reviewer',
foreign_key: 'reviewer_id',
dependent: :destroy
class Reviewer < ActiveRecord::Base
belongs_to :user
belongs_to :reviewer_id, class_name: 'User'
end
现在在我的用户控制器中,我有:
class UsersController < ApplicationController
def edit
@user = User.find(params[:id])
@user.reviewers.build
redirect_to root_url && return unless @user.activated?
end
def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
redirect_to edit_user_path(@user)
else
render 'edit'
end
end
private
def user_params
params.require(:user).permit(:invitation_token, :first_name, :admin,
:last_name, :title, :email, :password,
reviewers_attributes: [:reviewer_id])
end
我得到的错误是:
User(#70197180889680) expected, got String(#70197172430700)
发生在“user_params”上,所以我认为它与我的属性有关。有谁知道怎么回事?
【问题讨论】:
-
我看到的第一件事就是你的 Reviewer 有一个 reviewer_id 而不是一个 id,而且它属于那个 reviewer_id。看起来 Reviewer 应该只属于 :user。
标签: ruby-on-rails activerecord