Rails验证使得如果生活不可编辑

时间:2015-12-21 11:25:51

标签: ruby-on-rails

我试图了解铁轨验证。到目前为止我有这个

  def live
    person.live
  end

但是我不知道在此之后该怎么做,用户有一个按钮可以点击这里让人活着。这会将DB中的值从false更改为true。

然后他们有一个链接,可以编辑这里的用户

/people/{{person.id}}/edit

如何制作,以便用户在活动结束后无法访问链接(通过在浏览器中输入)?

由于

2 个答案:

答案 0 :(得分:2)

我建议使用某种授权gem。我个人使用CanCanCan

在那里,您可以指定用户可以访问的内容,而不是它应该重定向到的位置等。

在Ability.rb中指定此

can :update, Person, :live => false

在控制器中使用此

authorize! :edit, @person

在视图中,您可以使用类似这样的内容

<% if can? :update, @person%>
  <%= link_to "Edit", edit_person_path(@person) %>
<% end %>

答案 1 :(得分:1)

“我如何制作,以便用户在活动开始后无法访问链接(通过在浏览器中输入)?”

您可以使用before_action过滤器检查live字段是否为true。类似的东西:

控制器:

before_action :check_if_live_true

private

def check_if_live_true
    if live_field.true?
        redirect_to some_path
    end
end

如果live字段为真,则会重定向,然后有人输入匹配的网址。