Hy。我是Ruby on Rails和OOP的新手。
我就有点调度工作,要干我的模型方法。
我冲过一些关于Rails中Module和Class的用法,但是找不到什么是最好的方法。
difference-between-a-class-and-a-module
ruby-class-module-mixins如何在Ruby on Rails中按模块或类DRY重复的模型方法?
实施例:
假设我有2个模型(基准和人)。
每个模型都有一个属性,该属性存储日期,但具有不同的属性名称。
我写了两个模块的日期验证的方法相同。
我的模型:
class Datum < ActiveRecord::Base
attr :start_date
def validate_date
# same validation stuff with self.start_at
end
end
class Person < ActiveRecord::Base
attr :birth_date
def validate_date
# same validation stuff with self.birth_date
end
end
这是我尝试用一个lib/ModelHelper和基准型号:
class Datum < ActiveRecord::Base
include ModelHelper
attr_accessible :start_at
# Validations
before_validation :validate_date, :start_at
end
module ModelHelper
private
def validate_date *var
# validation stuff with birth_date and start_at
end
end
问:
在我的情况,我想我需要指定一个参数(对于每个模型属性:start_at和:bith_date)。
但我无法发现如何。
什么是干我的模型,以模块或类的最佳方式?
为什么和怎么样?
我强烈建议你检查出codereview.stackexchange.com – Anthony 2014-12-05 14:23:31
顺便说一句,我最近发表回答CodeReview.SE关于自定义Rails 4验证器:http://codereview.stackexchange.com/questions/71435/reservation-validation/71496#71496 – 2014-12-05 14:25:53
@Anthony我的问题不仅仅是代码审查。 更多关于理解Ruby on Rails中的Module和Class的内容,同时给出一个示例。 – stephanfriedrich 2014-12-05 15:11:20