gpt4 book ai didi

ruby-on-rails - 允许用户仅编辑 Ruby on Rails 上的部分字段

转载 作者:行者123 更新时间:2023-12-04 17:40:32 24 4
gpt4 key购买 nike

如何实现用户只能编辑记录中的某些字段?

例如:

用户可以在系统上注册并选择和指定用户名、密码等。但注册用户只能编辑他的姓名、电子邮件和密码,不能编辑他的用户名。

我有一个部分 _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%>

我想要做的是阻止用户更改员工和用户名属性。

提前致谢。

最佳答案

在几个地方注意这一点。

首先,在 User 模型中使用 attr_accessible,仅包含您希望用户编辑的那些:

attr_accessible :name, :email, :password, :password_confirmation #...

然后在表单部分中,仅在显示注册表单时显示用户名字段:

<% 如果@user.new_record? %>
<%= f.text_field :用户名 %>
<% 结束 %>

最后,在创建操作中,手动设置用户名字段,因为它现在在 attr_accessible 列表中,您无法批量分配它:

@user = User.new(params[:user])
@user.username = params[:user][:username]

请记住,如果用户名可以通过批量赋值设置,即使您禁用表单中的用户名字段,它仍然可以修改(在客户端更改表单中的字段值很容易)。这就是我们必须使用 attr_accessible 进行保护的原因。

编辑:注意到您的部分,最好将 admin 字段保护为用户名,否则用户可以通过更改客户端的字段值将自己设置为 admin。

关于ruby-on-rails - 允许用户仅编辑 Ruby on Rails 上的部分字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5030058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com