Я пытаюсь установить прямую связь через has_one между двумя моделями, Client
и Address
как в has_one
:billing_address
но Client
не имеет прямого отношения к Address
, Contact
делает, модели:Rails 4 has_one через с, где положение
Client
class Client < ActiveRecord::Base
belongs_to :contact
accepts_nested_attributes_for :contact
end
Контакт
class Contact < ActiveRecord::Base
has_one :client
has_many :addresses, dependent: :destroy
accepts_nested_attributes_for :addresses, allow_destroy: true
end
Адрес
class Address < ActiveRecord::Base
belongs_to :contact
enum kind: [:address, :shipping, :billing]
end
Так что я хочу, чтобы быть в состоянии сделать Client.shipping_address
или Client.billing_address
, тем enum
в Address
модели, что позволит запрос. Причина это потому, что Contact
из Client
будет иметь два адресных записей, один для выставления счетов и один для судоходства, и я хочу, быстрый доступ через отношения
Я попытался в модели клиента:
has_one(:billing_address, -> { where(kind: :billing) }, class_name: Address, through: :contact)
Но когда в виде I O:
client.billing_address
Я получаю undefined method to_sym' for nil:NilClass
И я не могу показаться, чтобы решить ее, Благодарю.
Какая БД вы используете? – mahatmanich