我有一个简单的嵌套表单,我正在设置一个带有隐藏字段的嵌套属性:
<%= role_form.hidden_field :company_id, :value => session[:company_id] %>
这里的想法是我通过当前会话变量Company
的集合将此嵌套模型(基于角色的权限系统)关联到另一个模型。company_id
我的问题是用户可以发送请求并随意创建/更新角色company_id
并获得对另一家公司帐户的访问权限。
我可以强制嵌套模型属性为此会话值或验证吗?
我在考虑创建:
@user = User.new(params[:user])
@user.roles.first.company_id = session[:company_id]
对于更新,我可以做同样的事情。
至于我尝试的验证:
accepts_nested_attributes_for :roles, :limit => 1, :allow_destroy => true , :reject_if => proc { |attributes| attributes['company_id'] != session[:company_id] }
但看起来您无法访问模型中的会话信息。
任何人都知道我是否可以通过这两种方式做到这一点?