Модель не проверяется - PullRequest
       10

Модель не проверяется

0 голосов
/ 07 января 2012

Я попытался настроить проверку формы, которая обеспечила бы включение в форму не менее 1 и не более 3 тегов. Но это не работает, так как пустая форма все еще обрабатывается, но форма с 4 разделенными запятыми тегами проверена правильно.

Контроллер

def update
  @product = Product.find(params[:id])
  current_user.tag(@product, :with => params[:product][:tag_list], :on => :tags)
  if @product.update_attributes(params[:product])
    redirect_to :root, :notice => "Added"
  else
    render :action => 'edit'
  end
end

форма

<%= form_for @product do |f| %>
  <%= f.label :tag_list, "Your tags" %> <%= f.text_field :tag_list, :value => @product.tags_from(current_user) %>
  <p><%= f.submit "Change" %></p>
  <%= f.error_messages %>
<% end %>

Модель

validate :required_info
validates_size_of :tag_list,
                  :maximum => 3

private

  def required_info
    if( tag_list.empty? and description.empty? )
      errors.add_to_base "Add one"
    end
  end

Ответы [ 2 ]

1 голос
/ 07 января 2012

Вы можете использовать пользовательскую проверку:

validates :tag_list_length

private

def tag_list_length
   errors.add(:tag_list, "Must include at least one and no more than three tags") unless tag_list.length.between?(1,3)
end
0 голосов
/ 07 января 2012
if( tag_list.empty? and description.empty? )
  errors.add_to_base "Add one"
end

Просто глядя на эту часть модели, я думаю, вы бы предпочли if(tag_list.empty? or description.empty?), потому что вы хотите, чтобы они оба были заполнены.

Что касается второй проверки, я не act_as_taggable пользователь, поэтому я не могу ответить вам сейчас.

...