2011-05-05 2 views
0

Вот моя модель пользователя:автореферентное has_many,: через

class User < ActiveRecord::Base 

    has_many :friends, :class_name => 'Friendship', :dependent => :destroy 

end 

Вот моя модель дружбы:

class Friendship < ActiveRecord::Base 

    belongs_to :user 
    belongs_to :friend, :class_name => 'User', :foreign_key => 'friend_id' 

    set_table_name :users_users 
end 

Теперь у меня есть логический атрибут в модели пользователя под названием * is_awesome *.

Когда я пытаюсь запустить этот запрос:

User.find(1).friends.find(:all, :include => :users, :conditions => {:is_awesome => false}) 

Я получаю следующее сообщение об ошибке:

ActiveRecord::StatementInvalid: Mysql::Error: 
Unknown column 'users_users.is_awesome' in 'where clause': 
SELECT * FROM `users_users` 
WHERE (`users_users`.user_id = 1 AND (`users_users`.`is_awesome` = 0)) 

Любая идея, что происходит?

+0

Фактическое имя таблицы для модели дружбы users_users в базе данных. – keruilin

ответ

0

Вы должны изменить: состояние, чтобы обратиться к таблице пользователей, это должно выглядеть примерно так:

User.find(1).friends.find(:all, :include => :users, :conditions => "users.is_awesome IS FALSE") 
Смежные вопросы