2009-07-26 23 views
66

Tôi có một mô hình có tên là "quần áo" mà tôi muốn là người độc thân (một phần quần áo). Theo mặc định, đường ray cho biết số nhiều là quần áo. Đúng hay sai, tôi nghĩ nó sẽ dễ đọc hơn nếu số nhiều là "quần áo".Làm cách nào để ghi đè quy ước đặt tên đường ray?

Làm cách nào để ghi đè quy ước đặt tên số nhiều? Tôi có thể làm điều đó ngay trong mô hình vì vậy tôi không phải làm nhiều lần? Điều này sẽ thay đổi cách các tuyến đường được xử lý như thế nào (tôi đang sử dụng kiến ​​trúc an toàn)?

+10

cách thay đổi mô hình của bạn thành hàng may mặc? –

+0

Liên quan: http://stackoverflow.com/q/6178900/1505348 – Lucio

Trả lời

115

Tôi không có chuyên gia RoR, nhưng đã tìm thấy possible approach. Từ các trang web tham khảo bạn có thể thêm quy tắc uốn bên trong config/initializers/inflections.rb file:

# Add new inflection rules using the following format 
ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'clothing', 'clothes' 
end 
+45

Thực ra, các nút tùy chỉnh của bạn nên nằm trong config/initializers/inflections.rb –

+3

Đối với những người lười biếng như tôi: 'ActiveSupport :: Inflector.inflections do | inflect | 'nếu nó không tìm thấy Inflector trên chính nó –

+0

Tôi thích cách tiếp cận của bạn. Nếu tôi có nhiều "tùy chỉnh", tôi sẽ lưu chúng trong một yaml và tải tệp trong cùng một tệp lưu trữ đó. – Aldana

27

Đối với đường ray 2.3.2 và có thể 2+, bạn cần phải làm điều đó một chút khác nhau:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.plural /^(ox)$/i, '\1\2en' 
    inflect.singular /^(ox)en/i, '\1' 

    inflect.irregular 'octopus', 'octopi' 

    inflect.uncountable "equipment" 
end 
5

Thêm này trong environment.rb tập tin của bạn nếu bạn đang cố gắng để ngăn chặn cơ sở dữ liệu pluralization

ActiveRecord::Base.pluralize_table_names = false 
-1

với Ruby 2.2.2 cửa sổ hoặc linux cho tôi giải quyết tốt nhất là:

ActiveRecord::Base.pluralize_table_names = false 

class Persona < ActiveRecord::Base 
end 


personas = Persona.all 
personas.each do | personita | 
    print "#{personita.idpersona} #{personita.nombre}\n" 
end 

p Persona.count 
Các vấn đề liên quan