新手问题 Ruby table 表与 model 名字的对应关系

xiaoxiao · 2013年06月13日 · 最后由 zj0713001 回复于 2013年06月13日 · 3447 次阅读

我创建了一个 migration

class CreateSuppliersCodes < ActiveRecord::Migration
  def up
  create_table :suppliers_codes, :id => false do |t| 
    t.references :supplier 
    t.references :code 
    end 
  end

  def down
  drop_table :suppliers_codes
  end
end

migrate 之后的表的名字是什么 为什么我在 rails c 中输入 Suppliers_codes 会提示 uninitialized constant 很明显表的名字输错了,正确的是什么,求助,有没有什么链接讲这方面的表与 model name 的对应关系

SupplierCode 简单来说,就是 model 名,一般的比如 Supplier,那么 migration 中应该是create_suppliers,一般的表名就是 model 的复数形式,

大哥这次你错了,还是 uninitialized constant SupplierCode 的错误

#2 楼 @xiaoxiao 哦,关联表是 SuppliersCodes, 你只要看你的 model 名是啥就行了

我有两个 model supplier 和 code,他们的表的名字是 suppliers 和 codes, 现在我想弄一个多对多的关系,我就 rails g migration create_suppliers_codes,migration 的表的内容如上,rake db:migrate 一下,在 rails c 上查看这个表,就出现了上面的错误

如果没有建立 Model,那么就没有这个 Model。

你在 console 下输入 Suppliers_codes?按照你的 migration 应该是 SuppliersCode 吧

直接登录数据库看看...

model 建了么 model 是 model migration 是 migration 另外你在 console 下输入 Suppliers_codes,约定的 model 名字应该是 SuppliersCode 不是负数 class SuppliersCode < ActiveRecord::Base;end 这样子 如果是 many to many 的话 相互调用是能调用的 但是不会有单独的 model

需要 登录 后方可回复, 如果你还没有账号请 注册新账号