【问题标题】:Change "to_sentence" for Arrays of one specific Model in Rails更改 Rails 中一个特定模型的数组的“to_sentence”
【发布时间】:2010-05-02 22:48:36
【问题描述】:

是否可以只为我的 rails 应用程序中的一个模型覆盖 to_sentence 方法?

更一般地说,如何修改模型数组的方法?

【问题讨论】:

    标签: ruby-on-rails ruby arrays


    【解决方案1】:

    您可以在该特定模型中定义 to_sentence

    class Model < ActiveRecord::Base
    
      def to_sentence
    
      end
    
    end
    

    当您在 AR 中处理查询结果时,数组的每个元素都是模型类的一个实例,因此会自动拥有所有方法和属性。数组本身将具有内置 Array 和 Enumerable 类的所有方法(加上一些来自 AR 的附加功能)。您也可以覆盖或扩展这些类。

    【讨论】:

    • 他想覆盖ActiveSupport::CoreExtensions::Array::Conversions#to_sentence。将to_sentence 添加到他的 ActiveRecord 模型将无法实现。
    • 托比,感谢您的回答,但也许我应该举一个真实的例子。我想要实现的是在使用 to_sentence 时让我的 CMS 的标签始终用逗号列出,覆盖默认行为(最后一个条目使用“and”)。我知道如何覆盖单个模型的行为(我在标签中覆盖了“to_s”以便我得到它的名字,而不是 #<0x56c9628>
    【解决方案2】:

    正如你可以想象的那样,我在 Rails 和 Stackoverflow 上都是菜鸟,但我正在努力做到正确:)

    我只是在applcation_helper.rb 上创建了一个助手,我可以在需要时调用视图。您认为这是要走的路,还是有比这更好的方法?

    无论如何,我仍然很想知道是否有办法为包含特定类/模型的 Array 覆盖 Array 方法:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多