浏览 2947 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-15
ruby的自定义主键 问了许多高手都说 不建议自定义主键 这样写: create_table :posts , :primary_key => 'userid' do |t| 但是生成的主键仍是自增的ID 和ruby的功能主键一样 后来看到了mysql_adapter.rb这个文件, .... def native_database_types #:nodoc: { :primary_key => "int(11) DEFAULT NULL auto_increment PRIMARY KEY", :string => { :name => "varchar", :limit => 255 }, :text => { :name => "text" }, :integer => { :name => "int"}, :float => { :name => "float" }, :decimal => { :name => "decimal" }, :datetime => { :name => "datetime" }, :timestamp => { :name => "datetime" }, :time => { :name => "time" }, :date => { :name => "date" }, :binary => { :name => "blob" }, :boolean => { :name => "tinyint", :limit => 1 } } end ... 它的主键都是这样定义好的(所以说不建议你自定义主键) 那也许你有很多问题:如一个用户登陆的userid 之类的怎么办 其实你可以创建索引 add_index "admin", ["userid"], :userid=> "userid", :unique => true
千万不要这样写: t.string :userid ,:unique => true
这样写不会报错但不会达到预期的效果 你也可以在model层添加这样一句: validates_uniqueness_of :userid 但是为了安全个人觉得还是在数据表中加上索引还是必须的 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |