2012-03-28 32 views
7

Tên lớp Rails có thể chứa số không? Ví dụ:Làm cách nào để đặt tên cho tệp ruby ​​Rails có tên lớp có số?

class Test123 
end 

Đây có phải là lớp hợp lệ không? Tôi gặp lỗi uninitialized constant Test123 khi tôi cố tải lớp học.

+13

Tại sao bạn không thử nó và thấy không? –

+0

'hằng số không xác định Test123'. Điều đó có nghĩa là nó không hợp lệ? @minitech nói rằng nó là. –

+0

@ArtemKalinchuk: Bạn có thể hiển thị mã chính xác tạo ra lỗi đó không? – Ryan

Trả lời

39

Tôi nghĩ nhận xét cuối cùng của Artem Kalinchuk xứng đáng là câu trả lời cho câu hỏi khó hiểu này.

Tên lớp Ruby có thể chứa số.

A Đường ray lớp học phải được xác định trong tệp được đặt tên chính xác. Nếu tôi xác định một lớp được gọi là NewYear2012Controller, nó cần phải được xác định trong tệp new_year2012_controller.rb thay vì "new_year_2012_controller.rb".

Bởi vì đây là cách hoạt động của tính năng tăng tải và tự động tải Rails.

7

Có, Ruby class names may contain numbers. Tuy nhiên, giống như tất cả số nhận dạng trong Ruby, they may not begin with numbers.

Reference:

định danh

Ví dụ:

định danh
foobar ruby_is_simple 

Ruby là bao gồm bảng chữ cái, chữ số thập phân, và ký tự gạch dưới, và bắt đầu với một bảng chữ cái (bao gồm cả gạch dưới). Không có giới hạn về độ dài số nhận dạng Ruby.

0

Tôi không biết về vấn đề này ...

Xem sau

class Ab123 
    def initialize(y) 
    @z = y 
    end 
end 

class AbCde 
    def initialize(y) 
    @z = y 
    end 
end 

và instantiations sau:

Ab123.new x 

hoặc

AbCde.new x 

Chỉ sau AbCde.new x instantiates đúng cách.

1

Cố gắng làm điều này:

  • đổi tên mô hình của bạn và tập tin model.rb
  • thêm tên_bảng diệu

như ở đây:

class TwoProduct < ActiveRecord::Base 
    self.table_name = '2_products' 
end 
Các vấn đề liên quan