现在我的课程看起来像这样。
class BalanceName < ActiveRecord
def before_validation
set_blank_attributes_to_nil(@attributes)
end
end
class Balance < ActiveRecord
def before_validation
set_blank_attributes_to_nil(@attributes)
end
end
我想将activer记录继承到一个类中,而不是希望将该类继承到其他类中。
我想要这样的东西。
class CommonActiveRecord < ActiveRecord::Base
def before_validation
set_blank_attributes_to_nil(@attributes)
end
end
class BalanceName < CommonActiveRecord
def before_validation
super
end
end
class Balance < CommonActiveRecord
def before_validation
super
end
end
答案 0 :(得分:2)
除了不需要重新定义子类中的before_validation
方法之外,您可以完全按照您的方式完成(尽管我猜这些方法可能在填充更具体的验证之前)。
您还需要向rails指出您的CommonActiveRecord
类是抽象的,因此不会通过添加来保持:
class CommonActiveRecord < ActiveRecord::Base
self.abstract_class = true
end
答案 1 :(得分:0)
您可以创建模块(例如lib / common_active_record.rb):
module CommonActiveRecord
def before_validation
set_blank_attributes_to_nil(@attributes)
end
end
然后在你的模型中简单地加入它:
class BalanceName < ActiveRecord::Base
include CommonActiveRecord
end
class Balance < ActiveRecord::Base
include CommonActiveRecord
end