2012-07-09 186 views
1

我爲Etho創建了一個腳手架,我試圖讓用戶獲得1個單一的「ethos」進行編輯。 Ethos正在工作,但在User模型上它只能與has_many一起工作:ethosRails 3:has_one的路由和複數問題

用戶應該只能得到1,所以我可以創建更好的關聯。但是現在,當我在模型中進行更改時,它創造出了我無法追蹤的蜘蛛效果。

用戶模式:

class User < ActiveRecord::Base 
    has_many :jobs 
    has_one :ethos #used to be has_many :ethos 

上的所有網頁現在我得到初始化常數用戶::校風上EthosController#編輯

請幫幫忙,我該如何解決這個問題?

回答

0

你試過了嗎?

class User < ActiveRecord::Base 
    has_many :jobs 
    has_one :etho 

has_one應爲單數:http://guides.rubyonrails.org/association_basics.html#the-has_one-association

+0

Right 。但第二部分描述了我無法想象的東西。 has_one:etho在EthosController上爲#<用戶:0x000001032c4b70>提供未定義的方法'ethos'#編輯 – 2012-07-09 19:51:07

+0

在您的控制器中,您需要將'User.ethos'更改爲'User.etho'。它也必須是單數。如果它沒有解決問題,請包含您的控制器的代碼。 – gabrielhilal 2012-07-09 19:57:36

+0

這是公開的要點。它正在向用戶現在可以創建etho的地方工作,但他們應該只有1 *,一旦創建,他們應該只能編輯1 * etho https://gist.github.com/3078792 – 2012-07-09 20:47:33

0

您可以繼續通過在has_one協會明確指定class_name使用精神多元化的名字:

class User < ActiveRecord::Base 
    has_many :jobs 
    has_one :ethos, class_name: 'Ethos' 

這個答案提供了額外的細節:https://stackoverflow.com/a/6604247/37966