Tôi đã thử tính năng enum mới của đường ray 4.1 và có một số rắc rối với nó.Rails 4.1 Enums: enum.status = nil
Mô hình của tôi trông như thế này:
class Report < ActiveRecord::Base
after_save :notify_clients
before_update :update_progress
before_create do
self.status ||= 'started'
end
enum status: %w{started active fail success}
#...
end
Và nếu tôi cố gắng sử dụng nó trong quan điểm của tôi như thế này:
.item{class: @report.status, data: {id: @report.id}}
tôi sẽ thấy điều này trong trình duyệt của tôi
<div class="item" data-id="25">
Tôi đã cố gắng tìm hiểu những gì status
thực sự đang sử dụng rails console
:
[11] pry(main)> Report.all.sample.status
Report Load (0.3ms) SELECT `reports`.* FROM `reports`
=> nil
[12] pry(main)> Report.all.sample.status
Report Load (0.2ms) SELECT `reports`.* FROM `reports`
=> nil
[13] pry(main)> Report.all.sample.status
Report Load (0.3ms) SELECT `reports`.* FROM `reports`
=> nil
[14] pry(main)> Report.all.sample.status
Report Load (0.2ms) SELECT `reports`.* FROM `reports`
=> nil
Và bây giờ xem xét điều này:
[22] pry(main)> Report.all.sample.attributes['status']
Report Load (0.2ms) SELECT `reports`.* FROM `reports`
=> "3"
Tôi không nhận được nó ...
Tôi có câu hỏi tương tự: Tại sao giá trị enum của tôi luôn được giải quyết là không? @ WillKoehler của câu trả lời đã làm các trick. – plusjeff