Rails 2.3:如何将此SQL语句转换为named_scope

ran*_*its 3 ruby activerecord ruby-on-rails

有一点困难,想弄清楚如何从这个SQL查询创建一个named_scope:

select * from foo where id NOT IN (select foo_id from bar) AND foo.category = ? ORDER BY RAND() LIMIT 1;

类别应该是可变的以进行更改.

为上述问题编写named_scope的最有效方法是什么?

zed*_*xff 7

  named_scope :scope_name, lambda { |category|
    { 
      :conditions => ["id NOT IN (select foo_id from bar) AND foo.category = ?", category],
      :order => 'RAND()',
      :limit => 1
    }
  }
Run Code Online (Sandbox Code Playgroud)