我遇到了以下问题:我有很多表,其中一些是嵌套的,而另一些则不是。我将我的应用程序划分为我认为正确的一些领域。一个区域应该同时操作一些表,在同一个动作中,就像我说的:一些模型是嵌套的,而另一些则不是。Rails 世界中最好的解决方案是什么?我应该读什么才能明白这一点?
我试着用
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
模型继续,直到我们得到地址模型:
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,这里) -> :Logradouro <-> 地址。我试图在两个方向上构建链,但我只得到 2 个对象,第三个给构建方法带来了 nil 问题。
这些表是关于地址的,我应该操纵用户模型 tha has_one Person,最后有一个地址,我想将地址指向 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 个嵌套对象。
我是新手。
再次感谢!