我将应用移植到rails中,其中一些列被命名为
2nd_phone 2nd_address
当我尝试使用迁移时 t.string:2nd_phone
我收到语法错误,意外的tINTEGER,期待tSTRING_CONTENT或tSTRING_DBEG或tSTRING_DVAR或tSTRING_END
如何在rals中做到这一点?
答案 0 :(得分:1)
在您的迁移文件中,使用带引号以支持起始字符作为数字,然后运行rake db:migrate
t.string :'2nd_phone'
如果你想创建新的记录,你需要这样做:
Model.create(:'2nd_phone'=> 'your value')
答案 1 :(得分:0)
您看到的错误是因为ruby不喜欢符号:2nd_phone
,因为ruby不支持以数字开头的符号。我认为如果您尝试使用完全相同的数据库模式,这将是您遇到的许多问题中的第一个问题。
您可以使用t.string "2nd_phone"
声明列,这意味着将运行迁移。但是,你仍然会遇到无法使用rails(activerecord)提供的属性的getter和setter的问题。即你不能再做my_thing.2nd_phone
,因为ruby不支持以数字开头的方法名称。
您可以(可能)使用属性hash(my_thing["2nd_phone"]
)访问属性,但是我希望您遇到很多其他问题。
所以,总而言之,我的建议是尽可能改变数据库架构。 second_phone
或phone2
都有效。