0

私は現在、Rails 3InActionを読んでいます。誰かが私に説明できるかどうか疑問に思っていたコードがあります。私はそれを理解するのに苦労しています:

    scope :readable_by, lambda { |user| joins(:permissions).where(permissions: { action: "view", user_id: user.id })}

ありがとう、マイク

4

1 に答える 1

5

これはRailsスコープと呼ばれます。基本的に、パーミッションテーブルでSQL結合を実行し、列の値が「view」で列の値がに等しい.readable_by(user)レコードを返すというクラスメソッドを作成します。actionuser_iduser.id

このように使用できます(Commentsモデルで定義されていると仮定します)。

readable_comments = Comments.readable_by(current_user)

何もしない単純なスコープは次のとおりです。

scope :my_scope_name, lambda {}

パラメータを受け入れるスコープは次のとおりです。

scope :my_scope_name, lambda { |my_parameter| }

そして、上記のスコープは、いくつかのActiveRecordファインダーメソッド、具体的にjoinsはとを使用しwhereます。

于 2012-06-19T02:30:57.497 に答える