我有一個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