私はRORを初めて使用しており、スコープを理解しようとしています。私の現在の実装では、すべてのプロセッサを取得してビューに表示しています。スコープを使用して複数のテーブルを結合する方法
class ProcessorsController
def index
@processors = Processor.all
end
end
私は、ユーザーが管理者あるだけのプロセッサを得ることができるので、これを変更したいです。これは私の関係がどのように設定されているかです。
class Processor
belongs_to :feed
#SCOPES (what I have done so far)
scope :feed, joins(:feed)
scope :groups, joins(:feed => :groups).join(:user).where(:admin => true)
end
class Feed < ActiveRecord::Base
has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :groups
scope :admin, where(:admin => true)
end
は、私は私のてこに
pry(main)> Processor.find(63).feed.groups.first.user.admin?
PSこれを行うことができた:誰かが私は関係が複雑な場合はスコープを使用する方法を学ぶことができるいくつかの良いリソースを提供することができます。あなたはスコープを必要としない
ありがとうございます。はい、私はその文書を徹底的に調べましたが、複数の結合を使用することはありませんでした。 –
あなたの答えは、実際にスコープ内の結合を使用する方法を私に示してくれました。それはまったく同じです。メソッドを呼び出す前に、モデル名の部分を '省略'するだけです。 – Francisco