我们有一个应用程序可以处理西红柿,豆类和南瓜等作物。
有些作物有很奇怪的复数形式,例如。你从不挑选一个大蒜"你挑了一个大蒜头#34;有些几乎从未以单数形式提及,例如。 "燕麦" - 你不能种植一只燕麦"。
我们在句子中使用这些单词," Bob种下3个西红柿"或者"玛丽收获3公斤燕麦"。
所以我们想使用Rails变形器来配置一些特殊情况。但是,我们希望将此详细信息与其他有关作物的信息一起存储在我们的数据库中。我们的用户将能够更新记录以列出正确的单数或复数形式。
我们已经了解了如何使用变形距离但是所有内容都建议在config / somewhere中配置它,这意味着我们必须重新启动应用才能使更改生效。我们怎样才能在数据库变化时从数据库中获取新的变形信息?
我们正在使用Rails 3.2,但如果需要,我们会欢迎Rails 4的答案,因为我们很快就会很快升级。
答案 0 :(得分:0)
您可以使用'变形'在从数据库加载裁剪时动态定义规则的单例。假设您将单数形式存储在属性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"