Ruby on rails 如何定义运行时源“内部U类型”;有很多“通过”;多态关联?
有没有办法通过多态关联定义rails中的运行时类型 下面的代码应该给你一个简单的想法。。但是它不起作用。。有什么建议吗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 =>
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
结束
结束