Is there a way to use pluralize() inside a model rather than a view?

北城余情 提交于 2019-12-03 03:34:09

问题


It seems pluralize only works within a view -- is there some way that my models can use pluralize too?


回答1:


Rather than extend things, I just it like this:

ActionController::Base.helpers.pluralize(count, 'mystring')

Hope this helps someone else!




回答2:


Add this to your model:

include ActionView::Helpers::TextHelper



回答3:


My favorite way is to create a TextHelper in my app that provides these as class methods for use in my model:

app/helpers/text_helper.rb

module TextHelper                       
  extend ActionView::Helpers::TextHelper
end                                     

app/models/any_model.rb

def validate_something
  ...
  errors.add(:base, "#{TextHelper.pluralize(count, 'things')} are missing")
end

Including ActionView::Helpers::TextHelper in your models works, but you also litter up your model with lots of helper methods that don't need to be there.

It's also not nearly as clear where the pluralize method came from in your model. This method makes it explicit - TextHelper.pluralize.

Finally, you won't have to add an include to every model that wants to pluralize something; you can just call it on TextHelper directly.




回答4:


YOu can add a method like this in your model

  def self.pluralize(word)
    ActiveSupport::Inflector.pluralize(word)
  end

and call it in this way

City.pluralize("ruby")
=> "rubies"



回答5:


This worked for me in rails 5.1 (see 2nd method, first method is calling it.)

# gets a count of the users certifications, if they have any.
def certifications_count
  @certifications_count = self.certifications.count
  unless @certifications_count == 0 
    return pluralize_it(@certifications_count, "certification")
  end
end

# custom helper method to pluralize.
def pluralize_it(count, string)
  return ActionController::Base.helpers.pluralize(count, string)
end


来源:https://stackoverflow.com/questions/6806473/is-there-a-way-to-use-pluralize-inside-a-model-rather-than-a-view

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!