通过控制器指定2个不同的模型,同一模型被加载两次

时间:2010-07-21 17:45:15

标签: ruby-on-rails activerecord model ruby-on-rails-3 schema

Rails 3 ......

我有一个控制器..

class OrdersController < ApplicationController
  def index
    @os_orders = OrlandoOrder.all
    @ct_orders = ChicagoOrder.all
  end
end

然后我定义了两个模型......

class ChicagoOrder < Order
  Order::ActiveRecord::Base.table_name_prefix = 'ct_schema.'
end

class OrlandoOrder < Order
  Order::ActiveRecord::Base.table_name_prefix = 'os_schema.'
end

然后是父模型......

class Order < ActiveRecord::Base

end

我想要做的是在多个数据库模式中建立相同的对象订单...

根据日志,sql是正确的......

ChicagoOrder Load(60.7ms)SELECT ct_schema.orders。* FROM ct_schema.orders

然而,它不是加载OrlandoOrder然后加载ChicagoOrder,而是加载指定TWICE的第一个模型。所以在这种情况下,它加载OrlandoOrder两次并运行该sql语句两次并将其加载到@ct_orders而不是ChicagoOrder.all。

我做了本地错误的事吗?我在做什么东西rails并不打算用多个架构?

请告知其他方式,盯着这几个小时,似乎无法谷歌正确的条款,看看是否有其他人分享了我的痛苦......

感谢!!!!!!!!!

1 个答案:

答案 0 :(得分:0)

HI, 发生这种情况是因为您在ChicagoOrder和OrlandoOrder中继承了Order模型。 只需通过继承简单的活动记录模型类来编写ChicagoOrder和OrlandoOrder。然后尝试它。