我试图了解铁轨验证。到目前为止我有这个
def live
person.live
end
但是我不知道在此之后该怎么做,用户有一个按钮可以点击这里让人活着。这会将DB中的值从false更改为true。
然后他们有一个链接,可以编辑这里的用户
/people/{{person.id}}/edit
如何制作,以便用户在活动结束后无法访问链接(通过在浏览器中输入)?
由于
答案 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
字段为真,则会重定向,然后有人输入匹配的网址。