0

我只是设置它,以便当用户注册我的博客时,它会在用户索引中为他们提供一个头像。这很好用,但我正在考虑制作它,以便当该用户发布帖子时,它会显示用户的头像。我刚刚通过迁移创建了一个 user_id 列来发布帖子。

这是我的架构的副本

ActiveRecord::Schema.define(version: 20131114141804) do

  create_table "comments", force: true do |t|
    t.text     "content"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "post_id"
  end

  create_table "posts", force: true do |t|
    t.string   "title"
    t.text     "content"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "user_id"
  end

  create_table "users", force: true do |t|
    t.string   "email"
    t.string   "password_digest"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "auth_token"
    t.string   "password_reset_token"
    t.datetime "password_reset_sent_at"
    t.string   "avatar_url"
  end
end

楷模:

用户:

class User < ActiveRecord::Base
  has_secure_password

  validates_uniqueness_of :email
  has_many :posts

  validates_presence_of :password, :on => :create
  before_create { generate_token(:auth_token) }

  def send_password_reset
    generate_token(:password_reset_token)
    self.password_reset_sent_at = Time.zone.now
    save!
    UserMailer.password_reset(self).deliver
  end

  def generate_token(column)
    begin
      self[column] = SecureRandom.urlsafe_base64
    end while User.exists?(column => self[column])
  end
end

邮政:

class Post < ActiveRecord::Base
  belongs_to :user
  has_many :comments
end

class Comment < ActiveRecord::Base
  has_many :posts
end

application_helper.rb

module ApplicationHelper
  def avatar_url(user)
    gravatar_id = Digest::MD5::hexdigest(user.email).downcase
    "http://gravatar.com/avatar/#{gravatar_id}.png?s=200"
  end
end

正在尝试做一些新的事情,任何人都可以帮助我或者指出我正确的方向吗?

4

2 回答 2

0

我建议仔细研究使用回形针进行连接过程,而不是尝试重新发明轮子。Paperclip 的文档实际上以用户头像为例,因此它非常适合您的用例。

于 2013-11-14T15:16:58.113 回答
0

您可能希望使用 Rails 插件与 Gravatar 集成,而不是自己动手:

于 2013-11-14T15:44:35.870 回答