1

我们有一个处理西红柿、豆类和南瓜等农作物的应用程序。

  • 一豆,多豆
  • 一个西红柿,很多西红柿
  • 一个南瓜,许多南瓜

有些作物有非常奇怪的复数形式,例如。你从不选“一蒜”,你选“一头蒜”。有些几乎从未以单数形式提及,例如。“燕麦”——你不种“一粒燕麦”。

我们在诸如“鲍勃种了 3 个西红柿”或“玛丽收获了 3 公斤燕麦”之类的句子中使用了这些词。

所以我们想使用 Rails 变形器来配置一些特殊情况。但是,我们希望将其详细信息与有关农作物的其他信息一起存储在我们的数据库中。我们的用户将能够更新记录以列出正确的单数或复数形式。

我们已经阅读了如何使用变形器,但一切都建议在 config/ 某处进行配置,这意味着我们必须重新启动应用程序才能使更改生效。当数据库发生变化时,我们如何从数据库中获取新的拐点信息?

我们正在使用 Rails 3.2,但如果需要,我们会欢迎 Rails 4 的答案,因为我们可能很快就会升级。

4

1 回答 1

0

当您从数据库加载作物时,您可以使用“inflections”单例动态定义规则。假设您将单数形式存储在属性中singular,复数形式存储在属性中plural......

class Crop < ActiveRecord::Base
  after_find do |crop|
    ActiveSupport::Inflector.inflections.plural(crop.singular, crop.plural) if crop.singular
  end
  ...
end

当然,你只是像往常一样使用复数方法......

ActiveSupport::Inflector.inflections.plural("beatle", "mopheads")

p "beatle".pluralize
=> "mopheads"
于 2014-07-23T08:08:20.470 回答