如何才能实现用户只能编辑记录中的某些字段?
例如:
用户可以在系统上注册并选择并指定用户名,密码等.但是注册用户只能编辑他的姓名,电子邮件和密码,而不能编辑他的用户名.
我有一个部分_form,我用它来创建新的和编辑函数.部分看起来像这样:
<% form_for @user do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :gruebl_employee_id %><br />
<%= f.collection_select(:firma_employee_id, FirmaEmployee.find(:all).sort_by{|p| p.lastname.downcase},:id,:full_name, { :include_blank => "---keine Mitarbeiter---", :prompt => "---Bitte auswählen---"}, { :style => "width: 332px;"}) %>
</p>
<%= observe_field(:user_firma_employee_id,
:frequency => 0.25,
:url => { :action => :retrieveinfo },
:with => "'id='+value") %>
<p>
<%= f.label :username %><br />
<%= f.text_field :username %>
</p>
<p>
<%= f.label :admin, "Administrator ?" %><br />
<%= f.check_box :admin %>
</p>
<p>
<%= f.label :email %><br />
<%= f.text_field :email %>
</p>
<p>
<%= f.label :password %><br />
<%= f.password_field :password %>
</p>
<p>
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %>
</p>
<p><%= f.submit %></p>
<%end%>
Run Code Online (Sandbox Code Playgroud)
我想要做的是阻止用户更改员工和用户名属性.
提前致谢.
在几个地方照顾这个.
首先,在User模型中使用attr_accessible,仅包括您希望用户编辑的那些:
attr_accessible :name, :email, :password, :password_confirmation #...
然后在表单partial中,仅在显示注册表单时显示用户名字段:
<% if @user.new_record? %> <%= f.text_field :username %> <% end %>
最后,在创建操作中,手动设置用户名字段,因为它现在位于attr_accessible列表中,您无法批量分配它:
@user = User.new(params[:user]) @user.username = params[:user][:username]
请记住,如果用户名是能够通过质量分配设置,即使禁用表单的用户名领域,它仍然可以修改(很容易在客户端的形式来改变字段的值).这就是我们必须使用attr_accessible进行预检的原因.
编辑:注意到你的部分,最好将admin字段保护为用户名,否则用户可以通过更改客户端的字段值将自己设置为admin.
| 归档时间: |
|
| 查看次数: |
4800 次 |
| 最近记录: |