【问题标题】:Ruby on Rails: how to check pluralized and single form of namesRuby on Rails:如何检查名称的复数形式和单一形式
【发布时间】:2012-10-26 00:01:45
【问题描述】:

我用命令创建了一个匿名模型

rails g model Anonymous section_id:integer aid:string fake:bool active:bool

但是迁移中的表名是匿名的

class CreateAnonymous < ActiveRecord::Migration
  def change
    create_table :anonymous do |t|
      t.integer :section_id
      t.string :aid
      t.bool :fake
      t.bool :active

      t.timestamps
    end
  end
end

Anonymous 的复数形式也是 Anomymous 对吗? (英语不是我的母语)。我怎样才能看到 Rails 给我的模型起的复数名称? rake routes 之类的东西?

【问题讨论】:

  • 其他答案讨论了 Rails 的复数形式是如何工作的,因此您可以看到表名是什么。我要补充一点,在英语中,“anonymous”是形容词,不是名词,因此通常没有复数形式。也许您的意思是 AnonymousUser 或 AnonymousComment?

标签: ruby-on-rails ruby-on-rails-3 introspection pluralize


【解决方案1】:

您可以在 Rails 控制台中执行此操作。

$ "anonymous".pluralize
=> "anonymous" 

或另一个复数词不同的例子。

$ "cookie".pluralize
=> "cookies" 

【讨论】:

    【解决方案2】:
    pluralize(count, singular, plural = nil) public
    

    除非 count 为 1,否则尝试将单数单词复数。如果提供了复数,它将在 count > 1 时使用,否则将使用 Inflector 确定复数形式

    例子:

    pluralize(1, 'person')
    # => 1 person
    
    pluralize(2, 'person')
    # => 2 people
    
    pluralize(0, 'person')
    # => 0 people
    

    给你

    "anonymous".pluralize
    

    【讨论】:

      【解决方案3】:

      我只是重命名您的模型。为自己省去痛苦和未来的调试,避免这种潜在的头痛。您可以将“Anonymous”与复数“Anonymouses”一起使用。或者想一个更聪明的名字。

      【讨论】:

        猜你喜欢
        • 2011-06-02
        • 2010-11-28
        • 2011-03-01
        • 1970-01-01
        • 2013-06-12
        • 2011-03-31
        • 2010-10-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多