我有一个带有source属性的ActiveRecord模型Message,以及两个可以是源的继承模型:
class Message < ActiveRecord::Base
belongs_to :source, :polymorphic => true
end
class Parent < ActiveRecord::Base
end
class A < Parent
has_many :messages, :as => :source
end
class B < Parent
has_many :messages, :as => :source
end
问题出在测试环境中message.source_type
属性是A或B,取决于源的类型。但是,当我尝试在制作中使用该应用时,message.source_type
为Parent
。
message = Message.new
a = A.new
message.source = a
# test mode: message.source_type == A
# production mode: message.source_type == Parent
我尝试用source_type
修复message.source_type = A.to_s
,但没有帮助。您是否知道以与测试环境相同的方式在生产中使用我的软件的良好解决方案?
答案 0 :(得分:2)
你不应该调用你的类Base,它会给你带来很大的问题,因为Base是为某些ruby / rails类保留的。也许这就是问题..