我使用此sanitize gem来清理我的模型。
但是我想创建一个模块来清理任何给定的列:
sanitize :name, on: :product
我正在寻找一些元编程,但我仍然没有得到任何东西:
class_eval <<-RUBY, __FILE__, __LINE__+1
def #{column}=(value)
#{column} = Sanitize.clean(value)
end
RUBY
答案 0 :(得分:1)
module ColumnSanitizer
extend ActiveSupport::Concern
module ClassMethods
def sanitize(*args)
args.each do |attribute|
class_eval <<-RUBY
def #{attribute}=(value)
super Sanitize.clean(value)
end
RUBY
end
end
end
end
class YourModel < ActiveRecord::Base
include ColumnSanitizer
sanitize :name
end