使用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