1. ホーム
  2. ruby-on-rails-4

[解決済み] スコープをラムダと引数でRails 4スタイルに?

2022-05-03 02:52:08

質問

Rails 4では以下のようにするのか、それともRails 3と同じように引数を渡すことができるラムダを4でも使うのか、気になります。

私はRails 3を使い始めたばかりで、Rails 4を動かしているいくつかのサンプルで作業しようとしています。

以下は私のRails 3コードです。

class Person < ActiveRecord::Base
  scope :find_lazy, lambda {|id| where(:id => id)}
end

# In console I can call
Person.find_lazy(1)

これがRails 4のやり方だとすると、-> {}を使うのはラムダですよね? scope :all_lazy, -> { select("*") } 引数が必要な場合はどうするか。いくつかのアイデアを試しましたが、-> {}を使用するとコンソールに引数エラーが表示されます。

どのように解決するのですか?

そうあるべきだと思います。

scope :find_lazy, -> (id) { where(id: id) }