creddit/app/models/post.rb

31 lines
878 B
Ruby

# models/post.rb
class Post < ActiveRecord::Base
belongs_to :user
belongs_to :subcreddit
has_many :comments
delegate :username, to: :user, prefix: true
delegate :slug, to: :subcreddit, prefix: true
validates :title,
presence: true,
length: { maximum: 300 }
validates :content,
length: { maximum: 15000 }
def to_param
# This "just works" because of the way Rails IDs work. .to_i must be run on
# any incoming ID. "1-title-parameterized" will automatically be converted
# to 1 and "2-title-paramerterized-with-number-2" will automatically be
# converted to 2. This gives us desired functionality without adding code
# to properly handle retrieving based on slug. Hopefully, this does not
# cause issues later on.
"#{self.id}-#{self.title.parameterize}"
end
def comments?
self.comments_count != 0
end
end