我不确定为什么在尝试使用复选框更新用户位置的布尔属性时仍然收到此批量分配错误(布尔属性为“is_visible”):
这是质量分配错误:
'Can't mass-assign protected attributes: position'
一个用户拥有多个职位。位置具有属性“is_visible”,它是布尔值。
你会注意到我在我的用户模型中包含了“accepts_nested_attributes_for”。我还在我的用户模型中包含“positions_attributes”作为可访问属性。
我的用户模型的摘录:
class User < ActiveRecord::Base
attr_accessible :position_ids, :positions_attributes
has_many :positions, dependent: :destroy
accepts_nested_attributes_for :positions
end
我的职位模型:
class Position < ActiveRecord::Base
attr_accessible :is_visible
belongs_to :user
end
摘自我的观点:
<%= form_for(@user) do |f| %>
<% @positions.present? and @positions.each do |position| %>
<%= f.fields_for position do |p| %>
<%= p.check_box :is_visible %>
<% end %>
Make this positions visible
<% end %>
现在从我的用户控制器:
def edit_profile
@user = current_user
@preferred_venue = @user.preferred_venues.last if @user.preferred_venues
@positions = @user.positions
@educations = @user.educations
end
def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
flash[:success] = "Profile saved"
redirect_to @user
end
end
将不胜感激任何反馈/帮助。谢谢!