Rails 2.3.8 Как id передается методу в примере с нумерацией страниц? - PullRequest
0 голосов
/ 26 августа 2010

Я работаю над учебным пособием Майкла Хартла «Обучение Rails by Example» (11.33). Соответствующий код:


class PagesController < ApplicationController

  def home

    @title = "Home"
    if signed_in?
      @micropost = Micropost.new
       @feed_items = current_user.feed.paginate(:page => params[:page])
    end
  end

class User < ActiveRecord::Base

  def feed

    Micropost.all(:conditions => ["user_id = ?", id])

  end

module SessionsHelper

  def sign_in(user)

    user.remember_me!
    cookies[:remember_token] = { :value   => user.remember_token,
                                 :expires => 20.years.from_now.utc }
    self.current_user= user
  end

  def current_user=(user)

    @current_user = user
  end


  def current_user

    @current_user ||= user_from_remember_token
  end

@ feed_items затем выводится как коллекция в will_paginate, и все работает нормально.

Моя проблема в том, что я не могу понять, как current_user передается методу «feed» в строке PagesController, т.е.

"@ feed_items = current_user.feed.paginate (: page => params [: page])"

Любая помощь будет принята с благодарностью

Alan

Ответы [ 2 ]

0 голосов
/ 26 августа 2010

current_user никогда не "передается" методу feed - метод feed равен и называется для объекта current_user.Взгляните на модель User:

def feed
  Micropost.all(:conditions => ["user_id = ?", id])
end

Это метод экземпляра, который выполняется при вызове current_user.feed.id в хэше :conditions относится к id экземпляра объекта пользователя, в данном случае current_user.

0 голосов
/ 26 августа 2010

Скорее всего, current_user определен в классе paret вашего контроллера: ApplicationController. Найдите «application_controller.rb» в каталоге вашего контроллера.

...