代码之家  ›  专栏  ›  技术社区  ›  Brad

具有多个相关地址的rails模型

  •  1
  • Brad  · 技术社区  · 7 年前

    # Address Model
    address_line_1
    address_line_2
    address_line_3
    post_code
    country
    
    # Vendor model
    name
    registered_address_id
    billing_address_id
    display_address_id
    

    注册地址、账单地址和显示地址应参考地址表中的地址。

    所以最终我可以做。注册地址等。

    关于迁移和我在模型上的关系,我对如何进行这项工作感到困惑,有人能给我指出正确的方向吗?

    非常感谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   Anand    7 年前

    您可以显式地这样做 class_name 在…上 belongs_to has_many foreign_key 在…上 你有很多

    class Vendor < ApplicationModel
      belongs_to :registered_address, class_name: 'Address'
      belongs_to :billing_address, class_name: 'Address'
      belongs_to :display_address, class_name: 'Address'
    end
    
    class Address < ApplicationModel
      has_many :registered_addresses, foreign_key: :registered_address_id, class_name: 'Vendor'
      has_many :billing_addresses, foreign_key: :billing_address_id, class_name: 'Vendor'
      has_many :display_addresses, foreign_key: :billing_address_id, class_name: 'Vendor'
    end
    

    参考资料:-

    has_many

    belongs_to

    查询=>

    vendor_object.registered_address
    vendor_object.billing_address
    vendor_object.display_address