0

我有一个带有源属性的 ActiveRecord 模型消息,以及两个可以作为源的继承模型:

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

4

1 回答 1

2

你不应该把你的类叫做 Base,它会给你带来很大的问题,因为 Base 是为一些 ruby​​/rails 类保留的。也许这就是问题所在。

于 2012-11-20T13:25:29.047 回答