2012-02-03 55 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