我的问题类似于Build vs new in Rails 3。
在 Rails 3 中,我可以在视图中构建一个对象以通过 cancan 检查授权。
<% if can? :create, @question.answers.new %>
# Code...
<% end %>
.new
在 Rails 3 中,和之间的区别在于.build
将.build
新构建的对象添加到父集合中,然后在视图中产生了额外的记录,这显然是不希望的。
然而,在 Rails 4 中,两者都将对象添加到集合中,从而在视图中呈现空记录。
有人对如何解决这个问题有任何建议吗?检查记录是否.persisted?
在视图中是一种选择,但不知何故我觉得我不应该这样做。
编辑:为了澄清,CanCan 模型如下所示:
can :manage, Answer do |answer|
user.belongables.include?(answer.question.try(:belongable))
end
因此,我不能只按班级检查。实际上需要一个实际的实例来根据关系进行比较。