Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 500 error when I deploy my app to Heroku
- 2012-01-03T10:33:49+00:00 app[web.1]: Started GET "/" for
- 2012-01-03T10:33:49+00:00 app[web.1]: Processing by PagesController#home as HTML
- 2012-01-03T10:33:49+00:00 app[web.1]:
- 2012-01-03T10:33:49+00:00 app[web.1]: Completed in 15ms
- 2012-01-03T10:33:49+00:00 app[web.1]:
- 2012-01-03T10:33:49+00:00 app[web.1]: app/controllers/pages_controller.rb:7:in `home'
- 2012-01-03T10:33:49+00:00 app[web.1]: ActiveRecord::StatementInvalid (PGError: ERROR: syntax error at or near "["
- 2012-01-03T10:33:49+00:00 app[web.1]: : SELECT "posts".* FROM "posts" WHERE (user_id IN ([]) OR user_id = 2) ORDER BY posts.created_at DESC LIMIT 30 OFFSET 0):
- 2012-01-03T10:33:49+00:00 app[web.1]:
- 2012-01-03T10:33:49+00:00 app[web.1]: LINE 1: ...sts".* FROM "posts" WHERE (user_id IN ([]) OR use...
- 2012-01-03T10:33:49+00:00 app[web.1]:
- class PagesController < ApplicationController
- def home
- @title = "Home"
- if signed_in?
- @post = Post.new
- @feed_items = current_user.feed.paginate(:page => params[:page])
- end
- end
- class User < ActiveRecord::Base
- has_many :posts, :dependent => :destroy
- has_many :relationships, :foreign_key => "follower_id",
- :dependent => :destroy
- has_many :reverse_relationships, :foreign_key => "followed_id",
- :class_name => "Relationship",
- :dependent => :destroy
- has_many :following, :through => :relationships, :source => :followed
- has_many :followers, :through => :reverse_relationships, :source => :follower
- attr_accessor :password
- attr_accessible :name, :email, :password, :password_confirmation
- email_regex = /A[w+-.]+@[a-zd-.]+.[a-z]+z/i
- validates :name, :presence => true,
- :length => { :maximum => 50 }
- validates :email, :presence => true,
- :format => { :with => email_regex },
- :uniqueness => { :case_sensitive => false}
- validates :password, :presence => true,
- :confirmation => true,
- :length => { :within => 6..40 }
- before_save :encrypt_password
- def has_password?(submitted_password)
- encrypted_password == encrypt(submitted_password)
- end
- def self.authenticate(email, submitted_password)
- user = find_by_email(email)
- return nil if user.nil?
- return user if user.has_password?(submitted_password)
- end
- def self.authenticate_with_salt(id, cookie_salt)
- user = find_by_id(id)
- (user && user.salt == cookie_salt) ? user : nil
- end
- def following?(followed)
- relationships.find_by_followed_id(followed)
- end
- def follow!(followed)
- relationships.create!(:followed_id => followed.id)
- end
- def unfollow!(followed)
- relationships.find_by_followed_id(followed).destroy
- end
- def feed
- Post.from_users_followed_by(self)
- end
- private
- def encrypt_password
- self.salt = make_salt unless has_password?(password)
- self.encrypted_password = encrypt(password)
- end
- def encrypt(string)
- secure_hash("#{salt}--#{string}")
- end
- def make_salt
- secure_hash("#{Time.now.utc}--#{password}")
- end
- def secure_hash(string)
- Digest::SHA2.hexdigest(string)
- end
- end
- class Post < ActiveRecord::Base
- attr_accessible :content
- belongs_to :user
- validates :content, :presence => true, :length => { :maximum => 140 }
- validates :user_id, :presence => true
- default_scope :order => 'posts.created_at DESC'
- scope :from_users_followed_by, lambda { |user| followed_by(user) }
- def self.from_users_followed_by(user)
- following_ids = user.following_ids
- where("user_id IN (#{following_ids}) OR user_id = ?", user)
- end
- private
- 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
- def self.from_users_followed_by(user)
- following_ids = user.following_ids
- where("user_id IN (#{following_ids}) OR user_id = ?", user)
- #------------------^^^^^^^^^^^^^^^^
- end
- where("user_id IN ([]) OR user_id = ?", user)
- where("user_id IN ([11, 23, 42]) OR user_id = ?", user)
- def self.from_users_followed_by(user)
- following_ids = user.following_ids
- if(following_ids.empty?)
- where('user_id = ?', user)
- else
- where('user_id in (?) or user_id = ?', following_ids, user)
- end
- end
- def self.from_users_followed_by(user)
- following_ids = user.following_ids
- if(following_ids.empty?)
- where('user_id = ?', user)
- else
- following_ids.push(user.id)
- where('user_id in (?)', following_ids
- end
- end
- def self.from_users_followed_by(user)
- where('user_id in (?)', user.following_ids + [user.id])
- end
Add Comment
Please, Sign In to add comment