私はまだRubyと特にRailsは新しく、まだレールの仕方で正しく動作する方法を学びます。 だから私はクラスの下から特定のユーザー(例:Admin)のカスタムActiveRecordクエリ
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :email, presence: true, email: true
has_many :user_program_roles, dependent: :destroy
has_many :programs, through: :user_program_roles
has_many :user_answers
has_many :homework_students
...
...
end
以下のようなUser
クラスは、私はprogram
を得るためにそれを理解している、user
はuser_program_roles
に存在することがあります。私の質問は、ユーザがなくてもすべてのプログラムをuser_program_roles
(たとえば私はAdmin
であり、すべてのプログラムを見たいと思っている)に取り込むことができるということです。それを達成するための最善の方法は何ですか?
Update
だから、気圧のアプリでは、私はこのcurrent_user.programs
のようなものを持つことができ、current_user
がuser_program_roles
のレコードを持っている場合には、すべてのプログラムをフェッチします。私はそれに似て達成することができ、私は(User
クラス内)Rubyでこのような何かを行うことができれば、私は知らない
def programs
if admin?
Program.all # return all program if this user is admin
else
programs # return only program that this user has role in it
end
end
あなたの宣言はすでに正しいです。すべてのプログラムを取得するには 'Program.all'を使うだけです。ユーザーがプログラムに関連付けられている場合、ユーザーは 'user_program_roles'にのみ存在します。 – vee
私は達成しようとしているもので私の質問を更新しました。しかし、そのコードは機能しませんでした。 ActiveRecordメソッドを上書きすることはできますか? –