我---7号斋主人

已婚
爱老婆
I wanna be a happy fish...

星期五, 八月 18, 2006

再谈ROR表名与model名

昨天从chinaonrails的gmail群里取来了经(见ROR 表命名规范),可是发现还是会有混乱的现象,如:2张表:biao,biaos,如果用scaffold来生成代码,是一定会有问题的,rails会将两张表的view都方到biaos中去,即使是用set_table_name分别去设置两个model的tablename也只能crud到一张表;至于通过设置environmet.rb来更改表和model的对应规则,也是不行(也许是我愚昧,但是我测试了,是不行,我也很希望能行,如果有人用成功了,请给我留comment)。

于是今天,就“很投入”的来解决这个问题了,结果,几经周折,在参阅了rubyonrails.pdf后,才发现其中的奥妙,用scaffold去生成代码,rails是样遵从自身的命名规范的(如果这个规范可以自定义,也一样,需要统一),如按照rails默认规则:当表名为单数的时候,系统会报error Before updating scaffolding from new DB schema, try creating a table for your model (tablename)的错,当然,网上也有对应的解决办法,就是将表名更改为复数,我没有测试,但是应该是OK的,因为在ruby script/generate model tablename,ruby script/generate controller tablename操作后,即使修改了对应的controller和model,set_table_name :tablename,再执行scaffold也是不行的。最终,我放弃了scaffold,通过ruby script/generate model tablename,ruby script/generate controller tablename之后就可以了,想crud哪张表,就set_table_name :tablename即可,至于index就自己def就好了。

没有评论: