[英]Why am I getting syntax error, unexpected '}', expecting keyword_end with scope?
我是初學者,現在已經學習Ruby on Rails大約10周了。 當我嘗試在我的一個模型上運行RSpec測試時,我收到此錯誤:
rb:4:語法錯誤,意外'}',期待keyword_end
看起來我的括號已關閉,我已正確結束。
class Item < ActiveRecord::Base
belongs_to :list
scope :created_after, -> (7.days.ago) { where("item.created_at > ?", 7.days.ago) }
end
范圍的目的是能夠區分超過7天的項目與上周寫入的項目。
這是我的列表模型的架構:
create_table "items", force: true do |t|
t.string "body"
t.integer "list_id"
t.boolean "done", default: false
t.datetime "created_at"
t.datetime "updated_at"
end`
我查看了Rails指南並反復搜索但找不到任何告訴我當前語法錯誤的內容。 有任何想法嗎?
問題在於如何定義lambda。 當你剛剛開始學習Ruby&Rails時,我建議你閱讀這篇文章來了解lambda是什么,它們如何操作以及語法是什么。 圓括號中的代碼應該是可以傳遞給lambda的變量名,而不是日期的定義。 例如你的代碼:
scope :created_after, -> (7.days.ago) { where("item.created_at > ?", 7.days.ago) }
應該:
scope :created_after, -> (date) { where("item.created_at > ?", date) }
這樣你就可以像這樣在Items
上創建查詢:
new_items = Item.created_after(7.days.ago) # or..
newer_items = Item.created_after(3.days.ago) # or...
new_done_items = Item.where(done: true).created_after(7.days.ago) # etc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.