0

ユーザーがブログにサインアップすると、ユーザー インデックスに gravatar が表示されるように設定しました。それはうまくいきますが、そのユーザーが投稿すると、ユーザーからのグラバターが表示されるようにすることを考えていました。移行によって投稿する 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

Rails プラグインを使用して Gravatar と統合することを自分で行うのではなく、使用したい場合があります。

于 2013-11-14T15:44:35.870 に答える