我忽略了应该是一个简单的解决方案。我一直收到错误:
NoMethodError in LifetimesController#index
undefined method `deadline' for #<Class:0x007f88a3c19bb0>
这是因为lifetime
个挑战之一有nil
:deadline
。添加截止日期是可选的。
我如何才能group_by
仅lifetime
出现: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?
条件。
答案 0 :(得分:1)
这是最终解决方案的解决方案:
scope :unaccomplished, -> { where.not(deadline: nil) }
我过去曾尝试过非常相似的事情,但只有这一点似乎有效。谢谢你的帮助!