关于使用self的帮助方法的问题

时间:2011-02-02 11:52:49

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

我创建了这个帮助方法。在我看来,我用days_left(duedate)来称呼它。我真的不喜欢我的助手。是否可以将其与self一起使用。因为我真的不知道自己是如何被使用的。它与java或javascript中的this相同吗?它与什么对象有关?随意调整此方法。感谢你的时间!

def days_left(duedate)
  (if duedate.date == Date.today
    "Today"
  elsif duedate.date-Date.today < 1
    "expired"
  elsif duedate.date-Date.today == 1
    "Tomorrow"
  else
    "#{(duedate.date-Date.today).to_i}"
  end).to_s.html_safe
end

1 个答案:

答案 0 :(得分:1)

您可以尝试将此方法移至模型中。

这类似于将“full_name”方法添加到具有属性“first_name”和“last_name”的模型中。您不会在数据库中单独存储'full_name',因为这会导致冗余的非规范化数据。

例如:

class Employee < ActiveRecord::Base
    def full_name
        "#{first_name} #{last_name}"
    end
end

因此,您可以类似地将“days_left”方法添加到您的模型中,因为它正在添加现有数据属性的更友好版本。