Итак, в конце концов я исправил это, используя внутренний синтаксис Rails ActiveRecord, что сделало его очень быстрым и удобным:
class Order < ApplicationRecord
belongs_to :ship_address, -> { where(kind: :ship) }, class_name: 'Address'
belongs_to :bill_address, -> { where(kind: :bill) }, class_name: 'Address'
end
Я решил добавить поле kind
в свою модель адресов и использовал Enum
функциональности нравится это:
class Address < ApplicationRecord
enum kind: [:ship, :bill]
end
В целом, использование ассоциации ActiveRecord с областью действия решило мою проблему.Это делает его очень удобным для использования, поскольку при создании нового адреса атрибут kind
уже установлен, что эффективно решает мою проблему.
@bill_address = Order.last.build_bill_address
@bill_address.kind #=> 'bill'