Forum: Ruby on Rails polymorphic validation

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
pabloz (Guest)
on 2007-06-19 12:22
(Received via mailing list)
Hello

I have 2 models.

link.rb

has_many  :categories, :as => :categorized
validates_presence_of :name, :url, :created_at, :category

category.rb

belongs_to :categorized, :polymorphic => true
validates_presence_of :name

Everything seems to work. I select my category from a select tag. The
problem is i don't know how to validate if category is for example
empty
(nothing in a select tag), i would like to display the validation
error
along with other validation errors for link.

My create link controller.

 def create
    @link = Link.new(params[:link])

    if @link.save
    flash[:notice] = 'Link was successfully created.'
    category = Category.new(params[:category][:id])
    category.categorized = @link
    category.save
    else
    render :action => "new"
    end
  end
Isabelle P. (Guest)
on 2007-06-19 13:20
Perhaps try enclosing the 'save' into a begin/rescue block?

I have something similar:

class Keyword < ActiveRecord::Base
   has_many :rules, :order => :position
<-->

keywords_controller:

  def addrule
    @keyword = Keyword.find(params[:id])
    rule_description = params[:rule][:description].strip
    # exclamation mark after create method call forces validation
    begin @keyword.rules.create!(:description => rule_description)
      flash[:notice] = "New rule was successfully added."
    rescue Exception
      flash[:notice] = "Error saving rule: " + rule_description +
"<br/>"
      flash[:notice] << $!.message
    end
    redirect_to :action => 'show', :id => @keyword
  end
pabloz (Guest)
on 2007-06-19 20:00
(Received via mailing list)
First of all I am sorry for triple post (accident).
Thank you for reply. I will look into your solution.

On 19 Cze, 11:20, Isabelle P. <removed_email_address@domain.invalid>
This topic is locked and can not be replied to.