ruby on rails -作用域中有多个参数



这对你们大多数人来说可能很简单,但是我没有真正写过很多有多个参数的作用域,单个参数也很好,只是这里不确定。我正在尝试创建一个作用域,它说"给我当前用户已借出的所有书籍"

我在我的书中提出了这个模型

scope :checked_out_book, lambda{|user| { :conditions => { :user_id => current_user.id, :checked_out => true } }

之前没有使用lambda所以不确定我是否正确使用它,无论哪种方式我都得到错误

syntax error, unexpected keyword_end, expecting '}'

谁能给我指一下正确的方向

编辑

已将作用域更改为

scope :checked_out_book, lambda {|user| where(:user_id => user.id, :checked_out => true) }

但是现在我得到

参数数错误(0为1)由于

我想这样做:

scope :checked_out_book, lambda {|user| where(:user_id => user.id, :checked_out => true) }
scope :checked_out_book, lambda {|user| where(:user_id => user.id, :checked_out => true) }

Book模型上,作用域应该是这样的:

scope :checked_out_book, lambda {|user| where(:user_id => user.id, :checked_out => true) }

或Ruby 1.9

scope :checked_out_book, ->(user) { where(user_id: user.id, checked_out: true) }

你可以这样称呼它:

Book.checked_out_book(current_user)

现在,因为User有许多Books,我可能会这样做,不打扰范围。如果你想要一个类似方法的方法,你总是可以创建一个返回Relation对象的方法。

current_user.books.where(checked_out: true)

def checked_out_books
  books.where(checked_out: true)
end
# current_user.checked_out_books

相关内容

  • 没有找到相关文章