Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在RubyonRails中阻止特定用户删除其帐户?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 如何在RubyonRails中阻止特定用户删除其帐户?

Ruby on rails 如何在RubyonRails中阻止特定用户删除其帐户?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我在/views/design/registrations/edit.html.erb中有此代码 <b>Cancel my account</b> <%= link_to "Cancel my account", registration_path(resource_name), :data => { :confirm => "Are you sure?" }, :method => :delete %>. 取消我的帐户 {:确认=>“确定

我在/views/design/registrations/edit.html.erb中有此代码

<b>Cancel my account</b>
<%= link_to "Cancel my account", registration_path(resource_name), :data => { :confirm => "Are you sure?" }, :method => :delete %>.
取消我的帐户
{:确认=>“确定吗?”},:方法=>:删除%>。
允许登录用户删除其帐户。现在,我不希望id=223的用户拥有此权限/链接。我该怎么做?我不确定edit.html.erb文件中下面的cod是否有效(或者有更好的方法吗?)

编辑-确定下面的代码正在工作,但如何通过控制器完成

<% if current_user.id != 223 %>
<b>Cancel my account</b>
    <%= link_to "Cancel my account", registration_path(resource_name), :data => { :confirm => "Are you sure?" }, :method => :delete %>.
<% end %>

取消我的帐户
{:确认=>“确定吗?”},:方法=>:删除%>。

控制器与是否显示链接无关。但是,您可以通过检查相同的条件在控制器中禁用删除

无论如何,您至少应该为此创建一个模型属性。这个id硬编码的东西不好,所以至少要把它隐藏起来,不要让它重复

model User
  ...

  def can_delete_account?
    id != 223  # ugly hack
  end

end

你好@Matzi-你能解释一下“无论如何,你至少应该为此创建一个模型属性”怎么做吗?谢谢,所以在视图中,我只需要打电话给?对吗?还有@Matzi,如果有两个账户呢?说是223号和224号?“id!=223&&id!=224”行吗?行。但是您可以使用
[223224].include?(id)
。最好的解决办法是以某种方式标记不可删除的记录。不要这样做。使用id==x是错误的。如果数据库被重新设定种子怎么办?如果您现在有两个要排除的用户,该怎么办?使用模型级别(甚至DB级别)属性。