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

Rails 4のhas_many 'conditions'オプションに相当するものは何ですか?

2023-09-10 19:25:26

質問

Rails 4で以下の行を実行するのに相当する方法を誰か教えてください。

has_many :friends, :through => :friendships, :conditions => "status = 'accepted'", :order => :first_name

を試してみました。

has_many :friends, -> { where status: 'accepted' }, :through => :friendships , :order => :first_name

しかし、以下のようなエラーが発生します。

Invalid mix of scope block and deprecated finder options on ActiveRecord association: User.has_many :friends

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

2番目の引数が必要です。

class Customer < ActiveRecord::Base
  has_many :orders, -> { where processed: true }
end

http://edgeguides.rubyonrails.org/association_basics.html#scopes-for-has-many

アップデートへの対応。

ブロックの中に順番を入れる。

has_many :friends, -> { where(friendship: {status: 'accepted'}).order('first_name DESC') }, :through => :friendships