【问题标题】:Abstraction for denormalization in Rails?Rails中非规范化的抽象?
【发布时间】:2010-12-01 06:31:58
【问题描述】:

我发现自己经常写这样的代码:

song.rb:

:before_save :cache_sortable_name

private

def cache_sortable_name
  return unless name_changed?
  self.sortable_name = name.sub(/^(the|a|an)\s+/i, '')
end

即,我有一个 sortable_name 数据库列,为方便起见,它包含非规范化数据,我想在模型名称更改时填充它。

我希望能够将此逻辑封装在这样的构造中

:cache_in_database :sortable_name do
  name.sub(/^(the|a|an)\s+/i, '')
end

什么的。这存在吗?

【问题讨论】:

    标签: ruby-on-rails denormalization


    【解决方案1】:

    所以...您需要一个名为“cache_in_database”的回调,它接受一个属性和一个块,并在每次保存之前将该属性设置为块的返回值。对吗?

    我还没有听说过这样的事情,但它会是一个易于编写的插件。只需编写一个 cache_in_database 类方法,它接受属性和块参数,创建一个执行分配的过程或方法,并将其添加到 before_save 链中。对我来说,问题是你是否经常这样做如此,每次节省一行左右的代码是值得的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-21
      • 2016-05-13
      • 2018-06-06
      • 2013-09-26
      • 2013-12-11
      • 2021-06-13
      • 2020-05-06
      • 2020-04-06
      相关资源
      最近更新 更多