我希望是一個簡單的問題。
如何將rails 2應用程序中的named_scope行轉換為rails 5的作用域行
original...
named_scope :effective_on, lambda { |date|
{ :conditions => ['(effective_on IS NULL OR effective_on <= ?) AND (ineffective_on IS NULL OR ineffective_on > ?)', date, date] }
}
我已經試過了,但它只是把條件行打印成字符串。。。
scope :effective_on, lambda { |date|
{ :conditions => ['(effective_on IS NULL OR effective_on <= ?) AND (ineffective_on IS NULL OR ineffective_on > ?)', date, date] }
}
我懷疑這是因為Rails 5.0不推薦使用“conditions”,但在這個版本中,當我嘗試用“where”替換它時,它在我面前爆炸了。。。
scope :effective_on, lambda { |date|
{ where('(effective_on IS NULL OR effective_on <= ?) AND (ineffective_on IS NULL OR ineffective_on > ?)', date, date) }
}
... 在我的臉上爆炸:整個“where”行在我的IDE中變紅,它告訴我“Expected:=>”
這就是我被難倒的地方
我知道這很簡單,我很抱歉問了一個愚蠢的問題。但如果你能給我指出正確的方向,我會很感激的。
問題是,舊Rails版本中的作用域返回類似
{ :conditions => 'some conditions }
的散列,但在新版本中,它返回活動記錄關系(類似where
方法的返回值)所以你必須改變:
to
沒有
{
}
的where
調用