rails generate model product name:string twoWord:string twoWordRef:references生成以下迁移文件
class CreateProducts < ActiveRecord::Migration
def change
create_table :products do |t|
t.string :name
t.string :twoWord
t.references :twoWordRef, index: true
t.timestamps null: false
end
add_foreign_key :products, :twoWordRefs
end
end我认为字段名应该是蛇案例,而不是骆驼案例,然而rails generate model正在迁移文件中生成骆驼案例字段名。我想我是在跟随我的generate命令中的例子。
稍后,当我试图通过引用更新rails时,我还会发现问题,其中rails假设外键在蛇的情况下,但在表中找不到我的外键。
我做错了什么?谢谢
发布于 2015-02-16 07:00:02
Rails自动生成蛇情况下的数据库表。例如,如果您的模型是TestModel,数据库中相应的表将是test_models。然而,属性的情况并非如此。
取而代之的是这样做:
rails generate model product name:string two_word:string two_word_ref:references更新
这完全超出了OP要求的范围,但我认为如果您启动Rails,共享它可能会有所帮助。Rails在命名模型和表时使用了一些约定(比如模型的单数名称和表的复数)。为此,它使用ActiveSupport::Inflector模块。
Inflector将单词从单数转换为复数,将类名转换为表名,将模块化类名转换为无类,将类名转换为外键。在inflections.rb中保留了复数、奇异化和不可数词的默认变化。
您可以使用它的分类和制表方法验证相应的名称。例:
"test_models".classify
# => "TestModel"
"TestModel".tableize
# => "test_models"https://stackoverflow.com/questions/28535969
复制相似问题