Rails - named_scopes - 条件条件

Ham*_*ish 2 ruby-on-rails

如果我有以下named_scope

named_scope :scope_by_user_id, lambda {|user_id| {:conditions => ["comments.user_id = ?", user_id]}}
Run Code Online (Sandbox Code Playgroud)

如果user_id不是nil,那么在rails中有一种方法只应用该条件吗?

Jor*_*ing 5

当然.你可以在任何其他Ruby块中放置lambda中的任何东西,所以:conditions只有当user_id不为nil时才修改它以返回散列.在这里,我使用了一个简单的三元条件:

named_scope :scope_by_user_id, lambda {|user_id|
  user_id.nil? ? {} : { :conditions => ["comments.user_id = ?", user_id] }
}
Run Code Online (Sandbox Code Playgroud)