2010-02-28 2 views
2

Если у меня есть следующие named_scopeRails - named_scopes - условные условия

named_scope :scope_by_user_id, lambda {|user_id| {:conditions => ["comments.user_id = ?", user_id]}} 

есть способ в рельсах применять только, что условие, если user_id не ноль?

ответ

5

Несомненно. Вы можете положить что-нибудь в лямбда, которое вы бы сделали в любом другом блоке Ruby, поэтому просто измените его, чтобы вернуть хеш :conditions только тогда, когда user_id не равен нулю. Здесь я использовал простой тернарный условный:

named_scope :scope_by_user_id, lambda {|user_id| 
    user_id.nil? ? {} : { :conditions => ["comments.user_id = ?", user_id] } 
} 
Смежные вопросы