2014-03-12 54 views
0

我在一個serach頁面中輸入公司名稱的文本框,並且我希望當我在文本框中輸入公司名稱例如「abc」時,它給了user's name從行業表的用戶表和公司名:下面是搜索頁面控制器:從軌道上的紅寶石中獲取多個表的數據

def search 
    @students=Students.all 
    if (!params[:tf_Company].blank? or params[:tf_Company] !="") 
     @user_Company= User.joins(:professions).where(:professions => {:Company=> params[:tf_Company].strip}).collect(&:First_Name) 
    end  

    render 'search' 
    end 

用戶模式

class User < ActiveRecord::Base 
    has_many :professions, dependent: :destroy 
end 

行業典範

class Profession < ActiveRecord::Base 
    belongs_to :user 
    validates :UserID, presence: true 
end 

我得到以下錯誤:

SQLite3::SQLException: no such column: professions.user_id: SELECT "users".* FROM "users" INNER JOIN "professions" ON "professions"."user_id" = "users"."id" WHERE "professions"."Designation" = 'Lead' 

但它不是工作正常,請幫助我,等待你的答覆。謝謝

+1

您可以發佈您的模型及其關聯請 –

+0

什麼是「它不工作精」是什麼意思?你會得到錯誤還是不是預期的結果? – Wukerplank

回答

0

加入條件是尋找foreign_key user_idprofessions表中,不幸的是不存在。因此,錯誤。

看看Profession模型,我假設你確實在professions表中包含了foreign_key,但將其命名爲UserID

我建議你堅持使用foreign_key作爲associationname_id,在我們的情況下是user_id

,但如果你還想去UserID作爲foreign_key然後both sides of association如下指定:

class Profession < ActiveRecord::Base 
    belongs_to :user, foreign_key: :UserID 
    validates :UserID, presence: true 
end 

class User < ActiveRecord::Base 
    has_many :professions, foreign_key: :UserID, dependent: :destroy 
end 
+0

我正在使用您的帖子,但仍然出現同樣的錯誤。 – user88

+0

我已經更新了我的答案。在關聯的兩側指定foreign_key。嘗試一下,讓我知道它是否解決了你的問題。 –

+0

您的問題是否解決? –