ruby on rails 3 - Rails3 with SQLite3::SQLException: no such



使用Sqlite3与Rails3,我收到"ActiveRecord::StatementInvalid: Sqlite3::SQLException: no such column" with a has_and_belongs_to_many情况。从rails控制台连接到Sqlite3,错误时页面。编辑器或page.admin_users

[[[编辑:解决了连接表id's中的错字]]]

gem安装rails 3.0.9

sqlite3 1.3.3 x86-mingw32

sqlite3-ruby

(win7 64bit开发机)

页面。rb -> OK

<>之前> class Page> belongs_to:subject> has_many:sections> has_and_belongs_to_many:editors,:class_name => "AdminUser"> #has_and_belongs_to_many:admin_users>>结束之前

admin_users。rb -> OK

<>之前>类AdminUser> has_and_belongs_to_many:pages> scope:named, lambda {|first,last| where(:first_name =>)> first,:last_name => last)}>>结束之前

迁移文件->发现错别字!

<>之前类CreateAdminUsersPagesJoin false do |t|t.integer:admin_users_id,:foreign_key => true #应该是admin_user_idT.integer:page_id,:foreign_key => true结束add_index:admin_users_pages, [:admin_users_id,:page_id] #再次输入admin_user_id结束def self.downdrop_table: admin_users_pages结束结束之前

rails控制台错误

<>之前irb(主要):004:0> page.admin_usersActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: admin_users_pages。admin_user_id: SELECT * FROM"admin_users" INNER JOIN "admin_users_pages" ON "admin_users"。Id = "admin_users_pages"。admin_user_id WHERE ("admin_users_pages")。Page_id = 2)之前

感谢Heikki的帖子。我自己解决了这个问题,然后才回头看这里(d'oh),但我很高兴接受答案。把它贴出来,我来检查一下,因为那是正确的。欢呼。

按照约定,连接表中的外键应该是单数的。用admin_user_id代替admin_users_id

  • http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html method-i-has_and_belongs_to_many
  • http://guides.rubyonrails.org/association_basics.html the-has_and_belongs_to_many-association

最新更新