Rails 5:如何將這個命名的_范圍轉換為一個范圍

我希望是一個簡單的問題。

如何將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方法的返回值)

所以你必須改變:

scope :effective_on, lambda { |date|
  { :conditions => ['(effective_on IS NULL OR effective_on <= ?) AND (ineffective_on IS NULL OR ineffective_on > ?)', date, date] }
}

to

scope :effective_on, lambda { |date|
  where('(effective_on IS NULL OR effective_on <= ?) AND (ineffective_on IS NULL OR ineffective_on > ?)', date, date)
}

沒有{}where調用

主站蜘蛛池模板: 国产精品视频一区二区三区经| 国产日韩AV免费无码一区二区 | 成人免费视频一区| 香蕉免费看一区二区三区| 国产视频一区二区| 国产精品毛片一区二区| 一区二区三区在线|日本| 视频一区二区精品的福利| 一区二区三区AV高清免费波多| 一区二区视频在线免费观看| 无码欧精品亚洲日韩一区夜夜嗨| 性色AV 一区二区三区| 好爽毛片一区二区三区四| 精品国产一区二区三区不卡| 无码丰满熟妇浪潮一区二区AV| 日韩精品一区二区三区国语自制| 国产一区二区三区小向美奈子| 久久精品一区二区影院| 91秒拍国产福利一区| 卡通动漫中文字幕第一区| 亚洲一区二区电影| 能在线观看的一区二区三区| 日本不卡一区二区视频a| 在线观看国产一区二区三区 | 亚洲国产成人久久综合一区77| 搡老熟女老女人一区二区| 国产伦精品一区二区三区四区| 国产视频一区二区在线播放| 日韩精品一区在线| 国产99视频精品一区| a级午夜毛片免费一区二区| 精品一区精品二区| 无码一区二区波多野结衣播放搜索 | 色一情一乱一伦一区二区三欧美 | 精品乱码一区二区三区四区| 国产精品99无码一区二区| 国产免费一区二区三区VR| 日韩成人一区ftp在线播放| 国产一区二区不卡老阿姨| 日本激情一区二区三区| 亚洲一区精品视频在线|