Rails3 с SQLite3 :: SQLException: такого столбца нет HABTM - PullRequest
1 голос
/ 07 июля 2011

Используя Sqlite3 с Rails3, я получаю «ActiveRecord :: StatementInvalid: SQLite3 :: SQLException: нет такого столбца» с ситуацией has_and_belongs_to_many.Из консоли rails, подключенной к Sqlite3, возникают ошибки, когда page.editors или page.admin_users

[[[EDIT: решено из-за опечаток в идентификаторах объединенной таблицы]]]

гемов установлено

rails 3.0.9

sqlite3 1.3.3 x86-mingw32

sqlite3-ruby

(машина win7 64bit dev)

page.rb-> ОК





> class Page      
>        belongs_to :subject
>        has_many :sections
>        has_and_belongs_to_many :editors, :class_name => "AdminUser"
>        #has_and_belongs_to_many :admin_users
>        
>        end

admin_users.rb -> ОК



>  class AdminUser      
>       has_and_belongs_to_many :pages
>       scope :named, lambda {|first,last| where(:first_name =>
> first, :last_name => last)}
>       
>     end

файл миграции -> Найдите опечатки!

    class CreateAdminUsersPagesJoin  false do |t|
          t.integer :admin_users_id, :foreign_key => true  # Should be admin_user_id
          t.integer :page_id, :foreign_key => true
        end
        add_index :admin_users_pages, [:admin_users_id, :page_id]  # Again admin_user_id
      end

      def self.down  
        drop_table :admin_users_pages
      end

    end

ошибки консоли rails

irb(main):004:0> page.admin_users
ActiveRecord::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 )

Спасибо Хейкки за сообщения.Я исправил это сам, прежде чем оглянуться сюда только сейчас (да), но я с радостью приму ответ.Отправьте это, и я проверю это, так как это было правильно.Приветствия.

1 Ответ

3 голосов
/ 08 июля 2011

По соглашению внешние ключи в таблице соединений должны быть единственными, т.е.admin_user_id вместо admin_users_id.

...