2012-02-03 58 views
3

我工作的一个Rails 3.1的应用程序,具有以下型号:用户/组关系has_and_belongs_to_many或has_many?

用户:

class User < ActiveRecord::Base 
    has_and_belongs_to_many :groups 
    has_many :ownerships, :class_name => 'Group' 
end 

组:

class Group < ActiveRecord::Base 
    has_and_belongs_to_many :users 
    has_one :owner, :class_name => 'User' 
end 

有它们之间的连接表,组表还有一个“user_id”列。我希望能在我的groups_controller.rb

@group = Group.find(params[:id]) 
foo = @group.owner 

写这篇但是当我做我出现以下错误:

Mysql2::Error: Unknown column 'users.group_id' in 'where clause': SELECT `users`.* FROM `users` WHERE `users`.`group_id` = 1 LIMIT 1 

我不明白为什么它连看为那一栏。任何帮助,将不胜感激!

回答

2

确保您的组表有一个user_id的或owner_id列,试试这个:

class Group < ActiveRecord::Base 
    has_and_belongs_to_many :users 
    belongs_to :owner, :class_name => 'User' 
    end 
+0

感谢antpaw。这似乎是向前迈出的一步(因为它不会再给我MySQL错误),但它仍然返回为零的@ group.owner.inspect。 – 2012-02-03 14:57:19

+0

是否确定column owner_id不是空的,并且具有该id的用户位于用户表中? – antpaw 2012-02-03 15:09:28

+0

你是对的!我实际上有“user_id”而不是“owner_id”。但现在当我尝试从另一端(@ user.ownerships.inspect)进来时,它再次寻找列“user_id”。 P.S.我在原始问题中更新了我的用户模型。 – 2012-02-03 15:15:30