2017-01-30 46 views
0

我有兩個關聯模型:爲什麼我無法創建像這樣的ActiveRecord條目?

Class User < ApplicationRecord 
    has_many :company_accounts 
end 

Class CompanyAccount < ApplicationRecord 
    belongs_to :users 
end 

我想創建一個CompanyAccount爲現有用戶。此作品:

@user.company_accounts.create 

爲什麼不能正常工作?

CompanyAccount.create(user_id: @user.id) 

完整的錯誤信息是「用戶必須存在」。我正在使用rails 5.0.1。

回答

1

試用belongs_to :user,它只有一個用戶不多。

+1

這個工程,非常感謝!你能解釋爲什麼第一個命令有效,第二個不是當我使用':users'時? – flxkrmr

+0

我不確定100%,但首先你擁有@ user.company_accounts.create,這樣rails會建立一個適當的查詢,其次你有CompanyAccount.create,所以你沒有用戶在這個範圍內的屬性。你可以使用這個複製它:'company_accounts = CompanyAccount.where(user_id:@ user.id)'然後'company_accounts.create'。它以其他方式觸摸belongs_to,但我現在無法複製它,所以我不確定區別在哪裏。 – Argonus

+0

好吧,我發現某種解釋http://blog.bigbinary.com/2016/02/15/rails-5-makes-belong-to-association-required-by-default.html,據我所知,鐵軌是尋找模型'用戶'來比較它並找到合適的'用戶',但你有模型'用戶',所以它無法找到它,錯誤有點誤導。首先,你已經在scoped屬性中定義了用戶,所以rails 5不在尋找他。 (用戶有一個適當的關聯名稱) – Argonus

相關問題