0

グループに関連付けられたユーザーモデルがあります。関係は以下のとおりです。

class User < ActiveRecord:;Base
  has_many :groups
end
class Group < ActiveRecord::Base
  belongs_to :user
  scope :user_groups, lambda { where(arel_table(:user_id).eq(@current_user.id) }
end

class ApplicationController < ActionController::Base
  def current_user
    @current_user ||= User.find(session['entity.user']) if session['entity.user']
  end
end

グループインデックスページのselect_tagでcurrent_userグループをフィルタリングしたい。

これを達成する方法は?

4

2 に答える 2

1

モデル内のこのデータにアクセスしないでください(MVCに違反しています)。スコープへの引数として渡す方がよいでしょう。

scope :user_groups, 
           lambda { |user| where(arel_table(:user_id).eq(user.try(:id) || user) }

そしてそれをこのように呼んでください:

User.user_groups(@current_user) # or you can pass @current_user.id, still works

:id(整数)またはユーザーオブジェクトのいずれかをuser_groupsラムダに渡すことができます。

于 2013-01-11T15:07:50.873 に答える
0

モデル内のcurrent_userを確認する必要がある場合があります。したがって、現在のユーザーメソッドセットでは次のようになります。

 ActiveRecord::Base.current_user = @current_user

これは、将来定義するモデルのcurrent_userをチェックするのに役立ちます。

于 2013-01-11T15:08:36.403 に答える