假设我定义了一个这样的结构
Struct.new("DefFgbs", :value, :condition, :school, :year)
我一直收到这个警告:
warning: redefining constant Struct::DefFgbs
我想在一个文件中定义“DefFgbs”,就像对一个类所做的那样,所以每次我需要一个“DefFgbs”对象时我都不会收到警告。我怎样才能做到这一点?是否有更好的选择来定义 ActiveRecord-less 模型?
假设我定义了一个这样的结构
Struct.new("DefFgbs", :value, :condition, :school, :year)
我一直收到这个警告:
warning: redefining constant Struct::DefFgbs
我想在一个文件中定义“DefFgbs”,就像对一个类所做的那样,所以每次我需要一个“DefFgbs”对象时我都不会收到警告。我怎样才能做到这一点?是否有更好的选择来定义 ActiveRecord-less 模型?
我想在一个文件中定义“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
正如@meager 所建议的那样,我会在一个文件中创建该类,而不是将其放入models
文件夹中(我喜欢将其保存为模型),而是将其放入您喜欢的文件夹中,在您的 Rails 项目下,例如app/classes/def_fgbs.rb
或lib/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"
它应该从那里捡起来。