2013-02-22 226 views
0

我遇到以下問題:我有很多表,其中一些是嵌套的,另一些是沒有的。我在一些地方劃分了我的應用程序,我認爲這是正確的方法。一個區域應該同時操作一些表格,以同樣的動作,就像我說的:有些模型不是嵌套其他模型。 Rails世界中的最佳解決方案是什麼? 我應該閱讀什麼才能明白這一點?RoR - 學習資源

我試圖用

accepts_nested_attributes_for 

我試圖建立的對象以相同的形式fields_for使用。但這將是一個複雜的形式,因爲一些對象包含外鍵,但不幸的是我無法獲得超過2個對象的正確構建。

我會繼續嘗試。

謝謝!

---- -----編輯

Class Country < ActiveRecord::Base 
     has_many :states 
     attr_accessible :nome 
     # i tried # accepts_nested_attributes_for :state 
    end 

    Class State < ActiveRecord::Base 
     belongs_to :country 
     has_many :cities 
     attr_accessible :nome, :country_id 
     # i tried # accepts_nested_attributes_for :city 
     # i tried # accepts_nested_attributes_for :country # too 
    end 

的模型繼續,直到我們得到ADRESS型號:

Class Adress < ActiveRecord::Base 

     has_many :bairros_logradouros # we name streets, avenues, parks as logradouros 
            # here in Brasil, the others models are translated 
            # to EN here 
     has_many :logradouros, :trough => :bairros_logradouros # many-to-many 

     attr_accessible :number, :complement, :other, :another 

     # i tried # accepts_nested_attributes_for :logradouro 
    end 

的設置:國家 - >狀態 - >城市 - >區(bairro,here) - >:Logradouro < - >地址。 我試圖在兩個方向上構建鏈,但我只得到2個對象,第三個構造方法帶來了一個零問題。

這些表格是關於地址,我應該操縱用戶模型tha has_one人,最後有一個地址,我想指出地址:在地址:addres_id人。

所有這些都必須在自定義數據控制器中操作,所有CRUD都在這裏。

我不能構建整個鏈條:

@addres = @addres.new 
    @other = @addres.logradouros.build 
    @another = @other.build_district 
    @even_more = @another.build_city 
    .... 

我學會了用objects.build和build_object,但我無法建立超過2個嵌套對象。

我是新手。

再次感謝!

+0

你能發表一些代碼嗎?請包括您的模型/協會以及相關的控制器和視圖代碼。 – PinnyM 2013-02-22 16:40:27

+0

好吧,我現在在另一臺電腦上,但我會編輯這個問題並添加更多示例。 – josias 2013-02-22 16:47:19

+0

編輯 - 上面有一些例子。 – josias 2013-02-22 18:31:57

回答

0

如果您使用Rails中質量分配白名單3.1+(直到但不包括Rails 4),那麼如果你使用accepts_nested_attributes_for :logradouros你需要有attr_accessible :logradouros_attributes(注意名稱中的複數logradouros和_attributes)。但是,你可能會遇到更多的問題。 Here是一個相關的問題。

開始時的一個很好的參考是讀取Rails guide中的所有內容。