2014-01-30 94 views
2

已經搞亂了Rails,而通過Hartl的教程,我被要求做一個項目。認爲這是一個偏離道路的好機會,儘管我不夠了解;)因此,我爲什麼會遇到一些問題。Rails的has_many關係沒有使用ID

我有兩個型號:

Foo,其參數名稱和has_many FooStatus

FooStatus,其參數Foo.name和內容,belongs_to的富

哈特爾的教程使用您登錄到帳戶,因此參數@foo已經綁定,並且foo.id將可以隨時使用。通過身份驗證後,用戶可以爲任何Foo創建狀態。在我的HTTP請求中,我試圖通過foo.namefoostatus.content發送並將該信息保存到我的數據庫。

我的問題: 這些模型會存儲db中兩個對象之間的適當關係/鏈接嗎?

<% if @foo.foostatus.any? %>是給我的錯誤

SQLite3::SQLException: no such column: foostatus.foo_id: SELECT 1 AS one FROM "foostatus" WHERE "foostatus"."foo_id" = ? ORDER BY created_at DESC LIMIT 1 

所以我假設.any?方法尋找foostatus.foo_id,我並不在我的表存儲。

我原本以爲我可以說

foo = Foo.find_by_name(params[:name]) 
@foostatus = foo.foostatus.build(params[:content]) 

但閱讀強參數把我轉了一圈,在這不會被允許。

回答

5

您可以指定哪些列可以作爲外國和主鍵進行關聯:

class Foo < ActiveRecord::Base 
    has_many :foo_statuses, foreign_key: :foo_name, primary_key: :name 
end 

class FooStatus < ActiveReocrd::Base 
    belongs_to :foo, foreign_key: :foo_name, primary_key: :name 
end 
+0

我花了一分鐘,要知道,我是缺少那些冒號foo_name的前面,但我得到了它! ;)非常感謝好先生! – user1870954