例如,我使用"奖金"作为我的模型,所以我希望"奖金"是复数形式,"奖金"是单数形式.
但是,在Ruby中,这导致:
"bonus".pluralize # bonus
"bonuses".singularize # bonuse
Run Code Online (Sandbox Code Playgroud)
因此,当我执行"has_many:bonus"时,它不使用Bonus.rb模型(因为Ruby需要Bonuse.rb模型).有没有办法在Ruby on Rails中以某种方式纠正它,使得"奖金"充当模型bonus.rb的复数形式?
我的语言环境是:de和我喜欢这个:
Sheet.model_name.human.pluralize # => Belegs
Run Code Online (Sandbox Code Playgroud)
给我添加一个尾随"e"而不是"s"
Sheet.model_name.human.pluralize # => Belege
Run Code Online (Sandbox Code Playgroud)
仅适用于Sheet-class.我可以在config/locales/models/de.yml中以某种方式添加它吗?
我是Rails的新手,请原谅我对ActiveRecord的无知.我的一个模型被命名为"校园".我运行了迁移,它除了"校园"之外还复制了所有内容.
我认为这很蹩脚,所以我将代码添加到环境配置中以使所有内容保持单一.
我删除了表,手动编辑了迁移文件以使用单数形式,并重新运行了迁移.现在我与"校园"的协会不再有效.我通过控制台运行它,注意到我得到了一个未初始化的常量"Campu".那么还有什么东西仍然认为"校园"是复数?我是否应该假设配置更改将导致我前进的麻烦?
我用它创建了一个引擎
rails plugin new myengine --mountable
Run Code Online (Sandbox Code Playgroud)
在项目文件夹中搜索"inflections"时,我找到 /test/dummy/config/initializers/inflections.rb文件
在这个文件中,我把
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.irregular 'singular_model', 'plural_model'
end
Run Code Online (Sandbox Code Playgroud)
当我尝试使用模型生成器(从项目根目录)
bin/rails generate model singular_model
Run Code Online (Sandbox Code Playgroud)
然后我用singular_models作为表名和迁移名称进行迁移
当我从myengine/test/dummy运行相同的命令时
bin/rails generate model singular_model
Run Code Online (Sandbox Code Playgroud)
我得到了具体的结果:plural_model作为表名和迁移名称
那么,我怎样才能将导流板装入导轨发生器?
我在考虑创建一个名为的模型Reply.我想知道Rails是否知道它的复数形式是replies不是replys?
在我的Rails 3.2.6应用程序中,我有一个模型,表示有关窗口小部件的数据集合.在我看来,这个类的正确名称是WidgetData复数,因为每个小部件我有多个数据项.
如果我要求Rails为这个类生成一个表单:
= form_for @widget_data do |f|
...
Run Code Online (Sandbox Code Playgroud)
我收到一个错误ActionView::Template::Error (undefined method 'widget_datum_path' ....据推测这是因为Rails数据/数据变形规则.
我不确定如何最好地解决这个问题:我可以让Rails指示我的模型实际上应该是WidgetDatum.或者我可以以某种方式禁用在这种特殊情况下使用变形规则,但我不确定如何最好地做到这一点.建议欢迎.
预测一个可能的答案:模型不仅仅被调用的原因Widget是我已经有一个已经命名的façade类,它提供了一个包含WidgetData其他信息的小部件的更丰富的视图.
可能重复:
如何覆盖rails命名约定?
我的应用程序将是西班牙语.说我想绞架生成激活.复数将是actividades所以我希望表和控制器被命名为....我怎么能这样做?
可能重复:
如何覆盖rails命名约定?
在Rails中生成新模型时,它会自动复数表名.但是,这并不总是很好 - 特别是对于具有非标准复数的单词.
我创建了一个名为的模型lens.由于rails认为这个词已经多元化,因此它没有在迁移文件中复数表名.没问题 - 我刚刚编辑了文件并在运行迁移之前已更改lens为lenses.
不幸的是,我在尝试实例化Lens类时遇到了这个错误:
Could not find table 'lens'
Run Code Online (Sandbox Code Playgroud)
我假设这是因为Rails认为这个单词已经是多元化的,所以当试图在数据库中找到表时它不会尝试复数.
那我该怎么办?我是否应该违反惯例而只是让Rails调用表lens而不是lenses,或者有没有办法正确配置?
我正在创建一个名为的模型Stadium,rails g model Stadium但rails正在将表名转换为stadia.
我stadium在迁移中手动更改了表名,并添加set_table_name "stadium"到我的模型类中.但我所有的路线都在寻找stadia_path.
我试过rails g model Stadium --force-plural没有成功.
我想我应该使用一个变形,但我不知道如何创建这个变形.体育场是单一的,我仍然需要这个模型的复数体育场.
我正在研究 Rails 4.1.0。我在我的应用程序中生成了leaves_controller 和 Leave 模型。
但是应用程序为叶子生成了路由,例如 new_leafe、edit_leaf 等。
实际上,我只希望将 Leave 的单数化字符串保留为 Leave,例如 new_leave_path、edit_leave_path。
如果有任何想法在 Rails 中将类名单一化,请分享。
我有这个模型
class Oferta < ActiveRecord::Base
belongs_to :entidade
has_many :candidatos, :through => :interesses
has_many :interesses, foreign_key: "oferta_id", dependent: :destroy
Run Code Online (Sandbox Code Playgroud)
基本上我有这个模型和模型Interesse及其复数,interesses但我认为Rails实际上是es在最后取消 并留给我Interess.现在它给了我这个错误:
uninitialized constant Oferta::Interess
Run Code Online (Sandbox Code Playgroud)
我如何定义的单数interesses是interesse?并不是interess
ruby-on-rails ×11
ruby ×4
model ×3
pluralize ×3
activerecord ×1
inflection ×1
localization ×1
plural ×1