我有一个receiver_id和sender_id,我通过隐藏的表单字段。这些属性是attr_accessible的,所以它们是可分配的。但是,我不希望它受到大规模分配。我怎么去解决这个问题,而不必求助于隐藏的表单字段,并使接收者和发送者ID attr_accessible?Rails Mass Assignment - 如何去做这个
控制器
Class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@first_name = @user.first_name
@last_name = @user.last_name
@wallpost = WallPost.new(params[:wall_post])
@showwallposts = @user.received_wallposts
end
def create
@wallpost = WallPost.create(params[:wall_post])
end
车型
class WallPost < ActiveRecord::Base
attr_accessible :content, :receiver_id, :sender_id
belongs_to :receiver, :class_name => "User", :foreign_key => "receiver_id"
belongs_to :sender, :class_name => "User", :foreign_key => "sender_id"
end
class User < ActiveRecord::Base
has_many :sent_wallposts, :class_name => 'WallPost', :foreign_key => 'sender_id'
has_many :received_wallposts, :class_name =>'WallPost', :foreign_key => 'receiver_id'
视图
<%= form_for(@wallpost, :url => {:action => 'create'}) do |f| %>
<%= f.hidden_field :receiver_id, :value => @user.id %>
<%= f.hidden_field :sender_id, :value => current_user.id %>
<%= f.text_area :content, :class => 'inputbox' %>
<%= f.submit 'Post', class: 'right btn' %>
<% end %>
不知道你的模型是什么以及'receiver_id'和'sender_id'是什么,很难说为什么你应该或不应该使用质量分配或最好的方式来做你想做的事情。根据名字,我猜你的担心是安全的,并且有一条规则,只有当前用户可以是'sender_id'。如果是这种情况,解决方案是不在表单中放置'sender_id',而只是从控制器中的当前用户设置它。需要更多信息才能给出完整有用的答案。 –
嗨,亚历克斯。谢谢你的评论。我要编辑我的帖子以显示更多信息。 – VPNTIME
要添加到我的最新评论,我不希望它,因此用户可以批量分配表单中的receiver_id和sender_id。 – VPNTIME