Ruby on Rails
Tuesday, March 27, 2018
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 luckMax
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_activeclass Bid < ActiveRecord::Basebelongs_to :auctionbelongs_to :uservalidates :auction, :user, presence: truevalidate :auction_active?, message: :auction_activevalidate :last_user_different?scope :sorted, -> { order(:created_at) }after_create :update_auctionprivatedef auction_active?if auction && !auction.active?if auction.finished?errors.add(:auction, :finished)elseerrors.add(:auction, :not_started)endendenddef last_user_different?if auction && usererrors.add(:user, :same_user_twice) if auction.last_user == userendenddef update_auctionauction.increase_price_and_time auction.publish_updatesendend
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+unsubscribe@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.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment