我只是设置它,以便当用户注册我的博客时,它会在用户索引中为他们提供一个gravatar。这工作正常,但我想这样做,以便当该用户发布帖子时,它将显示来自用户的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
试图做一些新事物,有人可以帮助我,或者指出我正确的方向吗?
答案 0 :(得分:0)
我建议您仔细查看使用paperclip进行附件处理,而不是尝试重新发明轮子。 Paperclip的文档实际上以用户头像为例,因此它非常适合您的用例。
答案 1 :(得分:0)
您可能希望使用Rails插件与Gravatar集成,而不是自己动手: