0

連想を通じて多態性を持つようになりました

# a/m/documnet.rb
class Document < ActiveRecord::Base
 has_many :possessions, as: :belonging
 has_many :clients, :through => :possessions, :source => :owner, :source_type => 'Client'
end

コンソールで

Document.new.clients 
#=> []

単純な形式のビューで

= f.association :clients, as: :check_boxes, collection: Client.all

問題なく動作します。

--

多くのリソースを動的に関連付けたいときに問題が発生します

class Document < ActiveRecord::Base
  has_many :possessions, as: :belonging

  def self.possession_owner_classes
     [Client, SomethingElse]
  end
  possession_owner_classes.each do |possession_class|
    has_many possession_class.model_name.underscore.pluralize, :through => :possessions,  :source => :owner, :source_type => possession_class.model_name
  end
end

コンソールで

Document.new.clients 
#=> []

単純な形式のビューで

= f.association :clients, as: :check_boxes, collection: Client.all

投げます

Association :clients not found

したがって、Rails はこの関連付けを認識していますが、単純なフォームは認識していません :-/ 何かアイデアをお願いします。

4

1 に答える 1