0

假设我定义了一个这样的结构

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

我一直收到这个警告:

warning: redefining constant Struct::DefFgbs

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

4

2 回答 2

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
于 2013-06-13T15:58:49.200 回答
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"

它应该从那里捡起来。

于 2013-06-13T16:30:13.987 回答