如何为具有嵌套属性的多态模型保存一个longate_to关联?

苏里亚

例如,我有以下模型:

class Person < ActiveRecord::Base
  # attributes: id, name
  has_one :address, as: :addressable
  accepts_nested_attributes_for :address
end

class Company < ActiveRecord::Base
  # attributes: id, name, main_address_id
  has_one :address, as: :addressable
  belongs_to :main_address, class_name: 'Address', foreign_key: :main_address_id

  accepts_nested_attributes_for :main_address

  def main_address_attributes=(attributes)
    puts '='*100
    puts attributes.inspect
    self.build_main_address(attributes)
    self.main_address.addressable_id = self.id
    self.main_address.addressable_type = self.class.to_s
    puts self.inspect
    puts self.main_address.inspect
  end
end

class Address < ActiveRecord::Base
  # attributes: id, address1, address2, city_id,..
  belongs_to :addressable, polymorphic: true
  validates :addressable_id, :addressable_type, presence: true
end

我正在尝试Company使用嵌套属性保存,您可以将其假定为参数:

{"name"=>"Test Company", "email"=>"", "display_name"=>"Company pvt ltd", "description"=>"Company desc", "founded_in"=>"2014-08-05", "website"=>"", "main_address_attributes"=>{"address1"=>"My address1", "address2"=>"My address2", "city_id"=>"10"}}

这不起作用,因为当main_address的addressable(addressable_idaddressable_type不存在时,即使我试图类的方法中添加它,它也拒绝并且不保存数据main_address_attributes=(attributes)Company

每当我尝试使用以上参数保存它时,都会出现此错误:

Main address addressable can't be blank

我该如何解决?

伊戈尔·古扎克(Igor Guzak)

万一belongs_to你有类似的东西:companyaddress(通过main_address_id有关,而这与通过多态与另一个(CompanyPerson有关addressable

例如,您可以更改:

has_one :address, as: :addressable

到:

has_many :address, as: :addressable

然后添加到您的Address

enum address_type: [:primary, :secondary]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当模型具有另一个模型的一个或零个实例时,可以使用has_one关联吗?

来自分类Dev

从具有归属关系Ember.js的另一个模型访问模型属性

来自分类Dev

GAE需要模型属性,如果另一个具有一定的价值?

来自分类Dev

从一个模型中检索Rails中的多态关联

来自分类Dev

在同一个模型上使用一个具有多个关联并具有一个关联

来自分类Dev

具有相同模型的Ruby on Rails 4的多态关联

来自分类Dev

如何创建一个类的(多态)集合/列表/数组,其中每个类可能具有一些不同的属性

来自分类Dev

如何最多允许一个rails模型的记录具有布尔属性true?

来自分类Dev

如何为每个给定的另一个属性值选择一个具有最大值的模型?

来自分类Dev

创建一个变量来保存SPSS中具有最大值的关联

来自分类Dev

在一个模型中跟踪两个多态关联

来自分类Dev

如何在一个Django表单工具WizardView中保存具有多个modelForms的多个模型

来自分类Dev

从关联的模型(表)中查找具有至少一个关联的所有记录

来自分类Dev

如何为具有相同关系的两个外键的模型编写关联?

来自分类Dev

如何在相同模型之间为两个不同的关联设置一个具有多次通过的

来自分类Dev

当模型具有另一个模型的一个或零个实例时,可以使用has_one关联吗?

来自分类Dev

多个longate_to和AssociationTypeMismatch

来自分类Dev

如何将Devise用户与另一个现有模型相关联?

来自分类Dev

如何使一个绑定模型适合xdata点中具有2个变量的模型?

来自分类Dev

在同一个模型上使用一个具有多个关联并具有一个关联

来自分类Dev

具有相同模型的Ruby on Rails 4的多态关联

来自分类Dev

具有多态关联的过滤和求和模型

来自分类Dev

如何为每个给定的另一个属性值选择一个具有最大值的模型?

来自分类Dev

具有多态关联和可接受的嵌套属性的factorygirl验证失败

来自分类Dev

如何为两个嵌套属性保存ID?

来自分类Dev

验证多态关联中一个或多个模型实例的限制

来自分类Dev

如何只为一个具有多态关联的模型指定验证?

来自分类Dev

如何在rails中保存包含另一个模型属性的模型?

来自分类Dev

如何遍历具有嵌套属性的 JSON 对象,操作并返回一个新对象?

Related 相关文章

  1. 1

    当模型具有另一个模型的一个或零个实例时,可以使用has_one关联吗?

  2. 2

    从具有归属关系Ember.js的另一个模型访问模型属性

  3. 3

    GAE需要模型属性,如果另一个具有一定的价值?

  4. 4

    从一个模型中检索Rails中的多态关联

  5. 5

    在同一个模型上使用一个具有多个关联并具有一个关联

  6. 6

    具有相同模型的Ruby on Rails 4的多态关联

  7. 7

    如何创建一个类的(多态)集合/列表/数组,其中每个类可能具有一些不同的属性

  8. 8

    如何最多允许一个rails模型的记录具有布尔属性true?

  9. 9

    如何为每个给定的另一个属性值选择一个具有最大值的模型?

  10. 10

    创建一个变量来保存SPSS中具有最大值的关联

  11. 11

    在一个模型中跟踪两个多态关联

  12. 12

    如何在一个Django表单工具WizardView中保存具有多个modelForms的多个模型

  13. 13

    从关联的模型(表)中查找具有至少一个关联的所有记录

  14. 14

    如何为具有相同关系的两个外键的模型编写关联?

  15. 15

    如何在相同模型之间为两个不同的关联设置一个具有多次通过的

  16. 16

    当模型具有另一个模型的一个或零个实例时,可以使用has_one关联吗?

  17. 17

    多个longate_to和AssociationTypeMismatch

  18. 18

    如何将Devise用户与另一个现有模型相关联?

  19. 19

    如何使一个绑定模型适合xdata点中具有2个变量的模型?

  20. 20

    在同一个模型上使用一个具有多个关联并具有一个关联

  21. 21

    具有相同模型的Ruby on Rails 4的多态关联

  22. 22

    具有多态关联的过滤和求和模型

  23. 23

    如何为每个给定的另一个属性值选择一个具有最大值的模型?

  24. 24

    具有多态关联和可接受的嵌套属性的factorygirl验证失败

  25. 25

    如何为两个嵌套属性保存ID?

  26. 26

    验证多态关联中一个或多个模型实例的限制

  27. 27

    如何只为一个具有多态关联的模型指定验证?

  28. 28

    如何在rails中保存包含另一个模型属性的模型?

  29. 29

    如何遍历具有嵌套属性的 JSON 对象,操作并返回一个新对象?

热门标签

归档