如何在模型和控制器之间共享变量? (Rails3中)

时间:2011-08-28 17:08:22

标签: ruby-on-rails database

如何使用Rails 3.1在模型和控制器之间共享变量?

用于更改模型必须触及的表格。

有任何想法以Rails方式做到这一点吗?

非常感谢

3 个答案:

答案 0 :(得分:1)

E.g。这份共享table_to_hit

class MyController < ApplicationController
  def my_action
    table_to_hit = params[:table_to_hit]
    @foo = MyModel.my_class_method(table_to_hit)
  end
end

class MyModel < ActiveRecord::Base
  def self.my_class_method(table_to_hit)
    # do something
  end
end

答案 1 :(得分:0)

Article.set_table_name(TABLE_NAME)

答案 2 :(得分:0)

这是个坏主意。

  

更好的例子。您使用2个表:table_1,table_2。

制作AbstractTable模型

class AbstractTable << AR::Base
  self.abstract_class = true

  @@tables_models = {}      

  def self.inherited(klass)
   raise 'Duplicate table error' if @@tables_models[klass.table_name]
   @@tables_models[klass.table_name] = klass
  end

  def self.get_model_for_table(table_name)
   table_name = table_name.to_s
   @@tables_models[table_name]
  end
  ...
  def foo

  end
end

class Table1 << AbstractTable
    self.table_name = '23424'

    def bb
    end
end

class Table2 << AbstractTable
    self.table_name = 'table_werw23424'       
end


AbstractTable.get_model_for_table('23424')