Rails从关系中访问多态数据

时间:2013-10-18 19:01:35

标签: ruby-on-rails

我在Rails应用程序中有以下模型。

class Address < ActiveRecord::Base
  belongs_to :addressable, :polymorphic => true
end

class Client < ActiveRecord::Base
  has_one :address, :as => :addressable, dependent: :destroy
  accepts_nested_attributes_for :address, :allow_destroy => true

  has_many :invoices
end

class Invoice < ActiveRecord::Base
  belongs_to :client
end

虽然我可以使用

检索客户端名称
@invoice.client.name 

我无法以类似的方式检索地址信息。

如何在视图中检索发票的地址属性?

1 个答案:

答案 0 :(得分:0)

@ invoice.client.address 即aswer。但我建议您使用委托

方法遵循得墨忒耳定律

http://en.wikipedia.org/wiki/Law_of_Demeter
http://api.rubyonrails.org/classes/Module.html#method-i-delegate

基本上这个想法是你可以这样做:@ invoice.client.address_street o better @ invoice.client_address_street