pat*_*ckS 21 ruby postgresql ruby-on-rails ruby-on-rails-4
我目前尝试将rails 3.2应用程序切换到rails 4.0.但我对has_and_belongs_many模型有一个问题.
我创建了一个测试应用程序,我遇到了同样的问题.这就是我所做的:
创建了两个模型:foo_clip和foo_url
class FooClip < ActiveRecord::Base
  has_and_belongs_to_many :foo_urls
  attr_accessible :id, :name
end
class FooUrl < ActiveRecord::Base
  has_and_belongs_to_many :foo_clips
  attr_accessible :url
end
在此之后,我更新了迁移文件:
class CreateFooClips < ActiveRecord::Migration
  def change
    create_table :foo_clips do |t|
      t.string :name
      t.timestamps
    end
  end
end
class CreateFooUrls < ActiveRecord::Migration
  def change
    create_table :foo_urls do |t|
      t.string :url
      t.timestamps
    end
  end
end
现在我已经为has_and_belongs_to_many表创建了迁移文件
class CreateFooClipsFooUrls < ActiveRecord::Migration
  def change
    create_table :foo_clips_foo_urls do |t|
      t.belongs_to :foo_url
      t.belongs_to :foo_clip
    end
  end
end
最后一步,我创建了一个用于测试的种子文件:
foourl1 = FooUrl.create!(:url => 'http://www.google.com')
foourl2 = FooUrl.create!(:url => 'http://www.apple.com')
fooclip1 = FooClip.create!(:name => 'TestClip1')
fooclip1.foo_urls << foourl1
fooclip1.foo_urls << foourl2
fooclip1.save
现在我做了:
rake db:drop
rake db:create
rake db:migrate
rake db:seed
并得到这个错误:
PG::UndefinedTable: ERROR:  relation "foo_clips_urls" does not exist
LINE 5:         WHERE a.attrelid = '"foo_clips_urls"'::regcla...
                                          ^
:               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
               pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
                FROM pg_attribute a LEFT JOIN pg_attrdef d
                  ON a.attrelid = d.adrelid AND a.attnum = d.adnum
               WHERE a.attrelid = '"foo_clips_urls"'::regclass
                 AND a.attnum > 0 AND NOT a.attisdropped
               ORDER BY a.attnum
如果我看一下postgres数据库,就会调用该表:foo_clips_foo_urls
任何想法为什么会这样?
pat*_*ckS 46
我通过将join_table名称添加到每个模型来修复问题,例如:
has_and_belongs_to_many :foo_urls,  :join_table => :foo_clips_foo_urls
| 归档时间: | 
 | 
| 查看次数: | 14542 次 | 
| 最近记录: |