Ok, and I don't understand what this means:
validates :auction_active?, message: :auction_active

class Auction < ActiveRecord::Base
  include ApplicationHelper

  belongs_to :product
  belongs_to :image
  has_many :bids

  validates :product, :image, :min_price, :start_price, :start_time, 
:duration, :bid_time_step, :bid_price_step, presence: true
  validates :duration, :bid_time_step, numericality: { only_integer: true }
  validates :min_price, :start_price, :bid_price_step, numericality: { 
greater_than_or_equal_to: 0.01 }
  validates :min_price, :start_price, :bid_price_step, fractionality: { 
multiplier: 0.01 }

  after_initialize do
    self.start_time = Time.now.round_by(15.minutes) if self.new_record? && 
self.start_time.nil?
  end

  before_create { |auction| auction.price = auction.start_price }

  def self.finished_soon
    # TODO: use PostgreSQL
    Auction.all.select { |a| (a.time_left <= 5.seconds) && (a.time_left > 
1.second) }
  end

  def started?
    start_time < Time.now
  end

  def finished?
    time_left < 0
  end

  def active?
    started? && !finished?
  end

  def time_left
    finish_time - Time.now
  end

  def start_in
    start_time - Time.now
  end

  def finish_time
    start_time + duration.seconds
  end

  def last_user
    bids.sorted.last.user if bids.any?
  end

  def increase_price_and_time
    self.price += self.bid_price_step
    self.duration += self.bid_time_step
    self.save!
  end

  def publish_updates
    PrivatePub.publish_to '/auctions/update', auction_id: self.id, 
time_left: status_desc(self), price: self.price
  end
end


On Tuesday, March 27, 2018 at 6:54:34 AM UTC-4, Allen Maxwell wrote:
>
> It might help to have the models for auction and user... also, I like to 
> add the annotate gem which gives some header comments in all my models to 
> show what fields etc are there.  Very helpful info and references.
>
> you already know that the validate needs to be validates...
>
> is this an active system or SUD?  do you have a solid development database 
> that is well populated to test/develop against?
>
> this link may help some:  
> http://guides.rubyonrails.org/active_record_validations.html#custom-methods
>
> other than that I'd have to see it in action to debug further. 
>
> Good luck
>
> Max
>
> On Monday, March 26, 2018 at 6:17:56 PM UTC-6, fugee ohu wrote:
>>
>> This model has some errors that I wasn't able to get sorted out the two 
>> lines that begin with validate should be validates but after that I don't 
>> understand what the author's trying to do If I change them to validates 
>> I get the error Unknown validator: 'MessageValidator' for   validate 
>> :auction_active?, message: :auction_active
>>
>>
>> class Bid < ActiveRecord::Base
>>   belongs_to :auction
>>   belongs_to :user
>>
>>   validates :auction, :user, presence: true
>>   validate :auction_active?, message: :auction_active
>>   validate :last_user_different?
>>
>>   scope :sorted, -> { order(:created_at) }
>>
>>   after_create :update_auction
>>
>>   private
>>
>>   def auction_active?
>>     if auction && !auction.active?
>>       if auction.finished?
>>         errors.add(:auction, :finished)
>>       else
>>         errors.add(:auction, :not_started)
>>       end
>>     end
>>   end
>>
>>   def last_user_different?
>>     if auction && user
>>       errors.add(:user, :same_user_twice) if auction.last_user == user
>>     end
>>   end
>>
>>   def update_auction
>>     auction.increase_price_and_time
>>     auction.publish_updates
>>   end
>> end
>>
>>

class User < ActiveRecord::Base
  has_many :authorizations
  has_many :bids
  has_one :avatar
  belongs_to :role
  has_many :permissions, through: :role

  validates :nickname, presence: true
  validates :nickname, uniqueness: { case_sensitive: false }

  accepts_nested_attributes_for :avatar

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable,
         :omniauthable, omniauth_providers: [:facebook, :vkontakte]

  before_create { |user| user.role = Role.default_role unless user.role }

  scope :bots, -> { where(role: Role.bot) }

  def self.random_bot
    bots.order('RANDOM()').first
  end

  def admin?
    role == Role.admin
  end

  def bot?
    role == Role.bot
  end

  def self.find_for_oauth(auth)
    authorization = Authorization.where(provider: auth.provider, uid: 
auth.uid.to_s).first
    if authorization
      user = authorization.user
    else
      email = auth.info[:email]
      nickname = auth.info[:nickname]
      user = User.where(email: email).first
      if user
        user.create_authorization(auth)
      elsif email.present? && nickname.present?
        password = Devise.friendly_token[0, 20]
        user = User.create(email: email, password: password, 
password_confirmation: password, nickname: nickname)
        user.create_authorization(auth)
      end
    end
    user
  end

  def create_authorization(auth)
    self.authorizations.create!(provider: auth.provider, uid: auth.uid)
  end

  def add_authorization(auth)
    authorization = Authorization.where(provider: auth.provider, uid: 
auth.uid.to_s).first
    if authorization
      authorization.user == self
    else
      create_authorization(auth)
      true
    end
  end
end



-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/394b4c7e-27e7-4e39-b9f1-1164887c5eda%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to