Ruby on rails 如何定义运行时源“内部U类型”;有很多“通过”;多态关联?

Ruby on rails 如何定义运行时源“内部U类型”;有很多“通过”;多态关联?,ruby-on-rails,activerecord,model-associations,Ruby On Rails,Activerecord,Model Associations,有没有办法通过多态关联定义rails中的运行时类型 下面的代码应该给你一个简单的想法。。但是它不起作用。。有什么建议吗 class A < ... has_many :message_messagables, :foreign_key => :message_id has_many :messagables, :through => :message_messagables, :source => :messagable, :source_type =>

有没有办法通过多态关联定义rails中的运行时类型

下面的代码应该给你一个简单的想法。。但是它不起作用。。有什么建议吗

class A < ...
  has_many :message_messagables, :foreign_key => :message_id

  has_many :messagables, :through => :message_messagables, :source => :messagable, :source_type => lambda { |a| a.custom_type }

 def custom_type
   raise "needs to be defined inside subclass"
 end

end


class MessageMessagable < ... 
 belongs_to :messagable, :polymorphic => true #[C, D]
 belongs_to :message
end

class B < A

 def custom_type
   "C"
 end
end

class E < A
 def custom_type
   "D"
 end

end
A类
。。。 有多个:message\u消息,:foreign\u key=>:message\u id has_many:messagables,:through=>:message_messagables,:source=>:messagable,:source_type=>lambda{a | a.custom_type} 自定义类型 raise“需要在子类内定义” 结束 结束 类MessageMessagable<。。。 属于:messagable,:多态=>true 35;[C,D] 属于:消息 结束 B类我遇到了同样的问题。我通过列出所有可用的源类型并添加分派方法解决了这个问题

A类
。。。 有多个:message\u消息,:foreign\u key=>:message\u id #将所有源类型列为关联 %w(电子邮件文件)。每个do |源|类型| 具有多个源类型。复数化。到符号,:到=>:message\u messagables,:源=>:messagable,:源类型=>源类型 结束 #调度方法 乱七八糟 public\u发送自定义\u type.pluralize.to\u sym 结束 结束