次の問題が発生しています。テーブルがたくさんあり、ネストされているものとされていないものがあります。私は自分のアプリをいくつかの領域に分割しました。それが正しい方法だと思います。私が言ったように、1つの領域は、同じアクションで同時にいくつかのテーブルを操作する必要があります。一部のモデルはネストされており、他のモデルはネストされていません。Railsの世界で最高のソリューションは何ですか?ポイントを得るために何を読むべきですか?
使ってみました
accepts_nested_attributes_for
そして、fields_forと同じフォームで使用するオブジェクトを作成してみました。ただし、一部のオブジェクトには外部キーが含まれているため、複雑な形式になります。残念ながら、3つ以上のオブジェクトで正しいビルドを取得できません。
頑張ります。
ありがとう!
- - 編集 - - -
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
モデルは、住所モデルを取得するまで続きます。
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
設定:国->州->市->地区(バイロ、ここ)->:Logradouro<->住所。チェーンを両方向にビルドしようとしましたが、2つのオブジェクトしか取得できず、3番目のオブジェクトはビルドメソッドでnilの問題を引き起こします。
これらのテーブルは住所に関するものです。最後に住所があるユーザーモデルthahas_onePersonを操作する必要があります。この場合、Person内の:addres_idに住所を指定します。
これはすべて、カスタムデータコントローラーで操作する必要があります。すべてのCRUDはここにあります。
チェーン全体を構築できませんでした:
@addres = @addres.new
@other = @addres.logradouros.build
@another = @other.build_district
@even_more = @another.build_city
....
私はobjects.buildとbuild_objectの使い方を学びましたが、2つ以上のネストされたオブジェクトをビルドできませんでした。
私は初心者です。
再度、感謝します!