連想を通じて多態性を持つようになりました
# 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 はこの関連付けを認識していますが、単純なフォームは認識していません :-/ 何かアイデアをお願いします。