ここでは、私が持っているものおおよそ次のとおりです。ルビー - 初心者Active Recordのクエリ/モデルの関連
私はロールを介して、多くのユーザーを持っている多くの企業があります。
class Company < ActiveRecord::Base
has_many :roles, :dependent => :destroy
has_many :users, :through => :roles
end
とを通じて多くの企業を持つことができ、多くのユーザーを役割:2一緒に結合し
class User < ActiveRecord::Base
has_many :roles, :dependent => :destroy
has_many :comapnies, :through => :roles
end
と多くの役割:
class Role < ActiveRecord::Base
belongs_to :user
belongs_to :company
end
ここでのアイデアは、ユーザーが共通の電子メールのユーザー名でサインインしてから、各社に割り当てられた特権を持つということです。役割には、特権列 'user_role'(guest、user、adminなど)とともにuser_idとcompany_idの各キーがあります。
ここで、ルビーの初心者は私に失敗します。ユーザーがログインすると、特権を持っている企業を照会し、メニューをドロップダウンしてオンザフライで切り替える必要があります。そこで、彼らはログインし、「会社A」でアクティブであり、次に「会社B」に切り替えることができます。彼らが切り替えるとき、company_idはセッション変数に格納されています(私はすでにuser_idに機能している認証システムが格納されています)。
これを照会する最良の方法は何ですか?私はuser_idを持っていて、company_id、company_name、 'user_role'などのリストを取得したいのですが、これを使ってポップダウンリストを生成します。
私はコンソールで試していますが、Role.Company.etc.etc
を試していますが、これを理解できないようです。私がPHP/MySQLでこれをやっていたのは、複雑な結合クエリだったはずです。私はジェットはそれを把握することができないレール私はそれが簡単だと確信しています。 ご協力いただければ幸いです。
おかげで、
ダン
あなたは 'current_user.companies'の会社のために何かをしてリストをすることができませんでしたか?スコープが正しく処理されているかどうかを調べるには、 '<%if current_user? – kobaltz
これはもちろん、ログイン時に認証がcurrent_userを使用していることを前提としています。 – kobaltz
@kobaltzビューでSQLクエリをトリガするのは悪いフォームなので、アクション内の会社を取得する方法を示すだけの方がいいでしょう。 – coreyward