我的问题类似于Build vs new in Rails 3。构建与新的Rails 4
在Rails 3中,我可以在视图中构建一个对象来通过cancan检查授权。
<% if can? :create, @question.answers.new %>
# Code...
<% end %>
在Rails 3,.new
和.build
之间的区别是.build
添加新建成的对象父集合,然后导致的观点,这显然是不希望额外的记录。
但是,在Rails 4中,它们都将对象添加到集合中,从而在视图中呈现空记录。
有没有人有任何建议如何解决这个问题?检查一个记录是否是.persisted?
在视图中是一个选项,但不知何故,我觉得我不应该这样做。
编辑:为了澄清,该康康舞模型是这样的:
can :manage, Answer do |answer|
user.belongables.include?(answer.question.try(:belongable))
end
正因为如此,我不能只按类进行检查。实际需要根据关系进行比较。
'如果可以? :创建,答案作为丢弃对象? (看起来你可以从这里通过该类:https://github.com/ryanb/cancan/wiki/Checking-Abilities#checking-with-class) – GSP