我试图在我的项目中使用问题。我想建立一个方法来获得我所拥有的每个模型的法语日期。这是我的代码。目前,我得到错误:错误的参数类型Class(预期的Module)在该行中包含DateTime。
这是我的文件models / concerns / date_time.rb
module DateTime
extend ActiveSupport::Concern
def self.included(base)
base.extend ClassMethods
base.class_eval do
scope :disabled, -> { where(disabled: true) }
end
end
# methods defined here are going to extend the class, not the instance of it
module ClassMethods
def date_string
h = {1=>'Janvier',2=>'Février',3=>'Mars',4=>'Avril',5=>'Mai',6=>'Juin',7=>'Juillet',8=>'Août',9=>'Septembre',10=>'Octobre',11=>'Novembre',12=>'Décembre'}
"#{self.created_at.day}-#{h[self.created_at.month]}-#{self.created_at.year}"
end
end
end

这是我的文件models / requirements.rb
class Demand < ActiveRecord::Base
include DateTime
belongs_to :skill
belongs_to :project
belongs_to :user
has_many :transactions
validates :project, presence: true
validates :skill, presence: true
validates :title, presence: true
end
&#13;
提前感谢您的帮助!
答案 0 :(得分:2)
请改用Rails built in I18n functionality。在模型层中进行本地化是错误的。模型应该只关注数据和业务逻辑 - 而不是如何呈现数据(如日期)。
答案 1 :(得分:2)
你的直接问题是,因为DateTime
是class in the Ruby standard library,Ruby正在尝试包含该类,而不是你的模块。如果您将模块重命名为唯一的名称,例如UsesDateTime
,则您的错误应该消失。
那就是说,对于这种特殊方法,我同意max。