当使用Cancan和Best_In_Place时,如果他/她无法更新该模型的其他属性,怎么能说'老师'只更新模型的某些属性(比如模型'book')。我知道Cancan尚不支持属性授权,因为它仍然在2.0中进行开发,所以我认为首先要使用这样的东西:
cannot :all, Book
if is_teacher?
can :update_certain_attribute, Book
end
但是因为我想使用Best_In_Place,我的初步研究告诉我,我只能使用属性进行Best_In_Place更新 如下所示
<%= best_in_place @book, :certain_attribute, :type => :input %>
而不是方法:
<%= best_in_place @book, :update_certain_attribute, :type => :input %>
处理这个问题的最佳方法是什么?谢谢:))
答案 0 :(得分:0)
更新为讨论两件事
这将确保变量属性可访问,因此如果更新使用best_in_place,模型/控制器将不允许变量实际更新
为此,我认为您需要查看动态属性可访问性。 Ryan在这里有一个很好的演员http://railscasts.com/episodes/237-dynamic-attr-accessible
要在best_in_place上使用cancan获得条件,您可以使用以下代码
这再次对特定属性没有帮助,但与动态属性相关联将确保变量不会被更改