生产和测试环境中的多态关系

时间:2012-11-20 11:27:47

标签: ruby-on-rails activerecord

我有一个带有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_typeParent

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,但没有帮助。您是否知道以与测试环境相同的方式在生产中使用我的软件的良好解决方案?

1 个答案:

答案 0 :(得分:2)

你不应该调用你的类Base,它会给你带来很大的问题,因为Base是为某些ruby / rails类保留的。也许这就是问题..