我的問題類似於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