Câu hỏi của tôi tương tự như Build vs new in Rails 3.Xây dựng và mới trong Rails 4
Trong Rails 3, tôi có thể tạo đối tượng trong chế độ xem để kiểm tra ủy quyền qua cancan.
<% if can? :create, @question.answers.new %>
# Code...
<% end %>
Trong Rails 3, sự khác biệt giữa .new
và .build
là .build
thêm các đối tượng mới được xây dựng vào bộ sưu tập của cha mẹ, mà sau đó dẫn đến một kỷ lục bổ sung trong quan điểm, mà rõ ràng đã không được như mong muốn.
Trong Rails 4, cả hai đều thêm đối tượng vào bộ sưu tập, hiển thị bản ghi trống trong chế độ xem.
Có ai có lời khuyên nào về cách giải quyết vấn đề này không? Kiểm tra nếu một hồ sơ là .persisted?
trong xem sẽ là một lựa chọn nhưng bằng cách nào đó tôi cảm thấy tôi không cần phải làm điều đó.
Edit: Để làm rõ, mô hình Cancan trông như thế này:
can :manage, Answer do |answer|
user.belongables.include?(answer.question.try(:belongable))
end
Bởi vì điều này, tôi không thể chỉ kiểm tra bằng cách lớp. Một thực tế thực tế là cần thiết để so sánh dựa trên mối quan hệ.
Làm thế nào về 'nếu có thể? : tạo, Trả lời' như một đối tượng ném đi? (Có vẻ như bạn có thể vượt qua lớp học từ đây: https://github.com/ryanb/cancan/wiki/Checking-Abilities#checking-with-class) – GSP