2010-01-14 36 views
6

Tôi đã thêm một trường bổ sung để dạng mới của tôi:Validate phi mô hình lĩnh vực

<%= select_tag :quantity, options_for_select(["Select a Value"].concat((1..10).to_a)) %> 

Nó xác định số lượng bản sao của bản ghi được tạo ra.

Làm cách nào để xác thực sự hiện diện (hoặc số) của trường đó vì nó không phải là một phần của chính mô hình?

validates_presence_of :quantitykhông thành công !!!

Trả lời

12

Tìm thấy. Bạn có thể muốn thêm một thuộc tính ảo trong mô hình.

......... 

attr_accessor :not_on_db 
......... 

validates_presence_of  :not_on_db, 
validates_length_of  :not_on_db, :within => 1..5 
......... 
1

Sử dụng validates_numericality_of validation. Việc xác nhận số bằng kiểm tra mặc định cho kiểu float, bạn cần phải cho bạn biết muốn xem các số nguyên. Vì số lượng sẽ không được lưu trữ trong db, nó cần phải là ảo.

Hãy thử điều này:

attr_accessor :quantity 
validates_numericality_of :quantity, :only_integer => true 

validates_numericality_of không chấp nhận con số không theo mặc định, bạn không nên cần phải kiểm tra sự hiện diện của các thuộc tính, và như bạn có thể muốn thay đổi phạm vi số lượng trong giao diện tôi sẽ không xác nhận nó ở đây.

Bạn muốn xác thực phạm vi, hãy khai báo nó dưới dạng hằng số trong mô hình. Tham khảo hằng số này cả trong xác nhận và khung nhìn.

+0

Tôi đã nhận được ngoại lệ sau với việc triển khai này: phương pháp chưa xác định 'quantity_before_type_cast ' Bất kỳ ý tưởng nào? – Lee

+0

Bạn có thể viết phương thức 'quantity_before_type_cast 'và trả về self.quantity. Nó không phải là rất sạch sẽ nhưng là một giải pháp. –

Các vấn đề liên quan