自引用的has_many,:通过
问题描述:
这里是我的用户模型:自引用的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))
任何想法是怎么回事?
答
你必须改变:条件引用用户表,它应该看起来是这样的:
User.find(1).friends.find(:all, :include => :users, :conditions => "users.is_awesome IS FALSE")
的友谊模型的实际表名是数据库users_users。 – keruilin 2011-05-05 05:36:00