未定义的方法nil" group_by"

时间:2015-12-11 00:27:07

标签: ruby-on-rails ruby model-view-controller

我忽略了应该是一个简单的解决方案。我一直收到错误:

NoMethodError in LifetimesController#index
undefined method `deadline' for #<Class:0x007f88a3c19bb0>

这是因为lifetime个挑战之一有nil :deadline。添加截止日期是可选的。

我如何才能group_bylifetime出现:deadline的挑战?

控制器

def index
  @lifetimes = current_user.lifetimes.unaccomplished
  @lifetime_months = @lifetimes.group_by { |t| t.deadline.beginning_of_month }
end

模型

scope :unaccomplished, -> { where(accomplished: nil) }

模式

  create_table "lifetimes", force: true do |t|
    t.string   "name"
    t.date     "deadline"
    t.boolean  "accomplished"
    t.integer  "user_id"
    t.datetime "created_at",                   null: false
    t.datetime "updated_at",                   null: false
  end

我未能成功为上述任何代码添加nil.present?条件。

1 个答案:

答案 0 :(得分:1)

这是最终解决方案的解决方案:

scope :unaccomplished, -> { where.not(deadline: nil) }

我过去曾尝试过非常相似的事情,但只有这一点似乎有效。谢谢你的帮助!