Rails 3:定义一个ActiveRecord-less类

时间:2013-06-13 15:50:49

标签: ruby-on-rails-3

假设我定义了像这样的结构

 Struct.new("DefFgbs", :value, :condition, :school, :year)

我收到了这个警告:

warning: redefining constant Struct::DefFgbs

我想在一个文件中定义“DefFgbs”,就像一个类一样,所以每次我需要一个“DefFgbs”对象时我都不会收到警告。我怎样才能做到这一点?有没有更好的替代方案来定义一个没有ActiveRecord的模型?

2 个答案:

答案 0 :(得分:1)

  

我想定义" DefFgbs"在一个文件中,就像一个班级一样,

所以,做吧。将其放入文件中,然后将其放入app/models。您的模型绝对不需要继承ActiveRecord::Base

# app/models/def_fgbs.rb

attr_accessor :value, :condition, :school, :year

class DefFgbs
  def initialize(value, condition, school, year)
    @value, @condition, @school, @year = value, condition, school, year
  end
end

答案 1 :(得分:1)

我会在@meager建议的文件中创建一个类,而不是把它放在models文件夹中(我喜欢为模型保存),把它放在你喜欢的文件夹中在您的Rails项目下,例如app/classes/def_fgbs.rblib/classes/def_fgbs.rb。然后,在您的config/application.rb文件中,添加以下内容:

config.autoload_paths << "#{::Rails.root.to_s}/lib/classes"

config.autoload_paths << "#{::Rails.root.to_s}/app/classes"

应该从那里拿起它。