Отображение профиля пользователя отправителя и получателя на каждом микросообщении - PullRequest
0 голосов
/ 04 февраля 2012

Мы ищем атрибуты отправителя и получателя для каждого микросообщения, который вводится на нашем сайте.Отправитель поста и получатель, на который он направлен.

Другими словами, на каждом микросообщении, которое видит каждый пользователь, мы хотим контент, и чуть выше или ниже контента поста, который мы хотимпоказанный отправитель и показанный получатель.Мы также хотим, чтобы пользователи могли нажимать либо на отправителя, либо на получателя и связываться непосредственно с этим профилем.

Как мы можем это сделать?Мы относительно новички в рельсах и думаем, что нужно внести дополнения в модель Micropost, чтобы это изменение заработало.Или должны быть внесены изменения в MicropostsController?

Модель Micropost:

class Micropost < ActiveRecord::Base
  attr_accessible :content, :belongs_to_id

  belongs_to :user


  validates :content, :presence => true, :length => { :maximum => 240 }
  validates :user_id, :presence => true

  default_scope :order => 'microposts.created_at DESC'

    # Return microposts from the users being followed by the given user.
    scope :from_users_followed_by, lambda { |user| followed_by(user) }

    private

      # Return an SQL condition for users followed by the given user.
      # We include the user's own id as well.
      def self.followed_by(user)
        following_ids = %(SELECT followed_id FROM relationships
                      WHERE follower_id = :user_id)
        where("user_id IN (#{following_ids}) OR user_id = :user_id",
              { :user_id => user })
    end
  end

MicropostsController:

class MicropostsController < ApplicationController
  before_filter :authenticate, :only => [:create, :destroy]

  def create

    @micropost  = current_user.microposts.build(params[:micropost])
    if @micropost.save
      flash[:success] = "Posted!"
      redirect_to current_user
    else
     @feed_items = []
     render 'pages/home'
    end
  end


  def destroy
      @micropost.destroy
      redirect_to root_path
    end
end

1 Ответ

1 голос
/ 04 февраля 2012

Чтобы устранить некоторую путаницу и сделать ее немного более раздражительной, я бы сказал:

class Micropost < ActiveRecord::Base
  belongs_to :sending_user, :class_name=>"User", :foreign_key=>"user_id"
  belongs_to :receiving_user, :class_name=>"User", :foreign_key=>"belongs_to_id"
end

это позволит что-то подобное на ваш взгляд для данного объекта Micropost "@micropost":

 <%= link_to(@micropost.sending_user.username, user_path(@micropost.sending_user)) %>

 <%= link_to(@micropost.receiving_user.username, user_path(@micropost.receiving_user)) %>

* это предполагает несколько вещей о пользовательском объекте и маршрутизации, но должно привести вас на правильный путь.

...