我有Post模型。它有头衔和身体。我想在那里添加简短描述。虽然,我知道如何使用snake_case(即short_description),我想知道是否有任何方法来创建一个帖子与 camelCase(即shortDescription)。
这是我的schema.rb文件
create_table "posts", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "title"
t.text "body"
t.string "shortDescription"
end
我在控制器和表单中添加了shortDescription。当我去帖子#create时,我收到以下错误。
未定义的方法`shortDescription'
现在我要回滚数据库,并创建short_description。这不是一个大问题,但由于我对技术的好奇心,我想知道如何使用camelCase。 (也许有一天我需要使用Rails应用程序加入带有camelCased属性的数据库)。
任何建议表示赞赏。谢谢!
答案 0 :(得分:2)
在Postgres(以及SQL语言的ISO / ANSI标准)中,对象名称不区分大小写。
因此objectName
与objectname
相同,因此在决定使用驼峰名称时必须考虑到这一点。
你可以告诉Postgres,你确实想要使用区分大小写的名称 - 只需在名称周围添加双引号:"objectName"
。请注意,以后您将无法使用objectName
这样的对象,它只会尝试查找objectname
并且无法找到它,从而触发错误,因此使用双引号会是强制性的。
此外,使用双引号区分大小写的对象名称时会有一些小的警告(例如,psql的\d
命令将列出您的对象:"public.objectName"
,这不是真的正确,正确的名称是"public"."objectName"
,等等。
在少数项目中,我有骆驼式的表/列名称,总是有些痛苦,特别是当一个新的开发人员开始使用这样的项目时。
所以我建议在SQL中使用带下标记的名称(object_name
)。
答案 1 :(得分:0)
这是个坏主意。因为postgresql不区分大小写,所以这个字段会遇到很多问题。 所以,我认为您可以在迁移中使用sql查询创建此camelCase字段。像这样:
"some query text \""+"camelCaseName"+"\" end query text".