Привет, я новичок в Rails, и это мой первый stackoverflow вопрос.
В настоящее время я пишу приложение для опроса , концепция очень проста.
Пользователь может создать new poll
, дав ему название и несколько возможных ответов.
Ответы могут быть добавлены или удалены с помощью ссылок javascript: void (0) (см. Рисунок)
Пока все прекрасно работает (благодаря nested_form gem Райана), но теперь я спрашиваю себя, как я могу посчитать количество ответов , поэтому я могу ограничить его, чтобы сказать максимум 5 ответов на вопрос?
(в настоящее время вы можете создавать неограниченное количество ответов)
Часть, создающая ответ, в форме опроса выглядит - ЭТО - в браузере.
Модель опроса ( poll.rb ):
class Poll < ActiveRecord::Base
has_many :answers, :dependent => :destroy
accepts_nested_attributes_for :answers, :reject_if => lambda { |a| a[:name].blank? }, :allow_destroy => true
end
Модель ответа ( answer.rb ):
class Answer < ActiveRecord::Base
belongs_to :poll
validates_presence_of :name
end
Мой текущий подход к подсчету ответов ( polls_controller.rb ):
def new
@poll = Poll.new
2.times { @poll.answers.build }
end
def create
...
if @poll.answers.count > 10
flash[:alert] = 'Too many answers (not exceeding 10), please remove some'
render :action => 'new'
return
end
if @poll.save
redirect_to poll_path(category_slug(@poll), @poll.id), :notice => 'Successfully created poll.'
else
render :action => 'new'
end
...
end
Очевидно, мой метод не сработает, потому что ответы еще не созданы , поэтому мой вопрос:
- Как и где ( JavaScript , Опросы-контроллер , Модель опроса ) я должен посчитать количество заданных ответов, чтобы я мог ограничить число
Спасибо, я очень ценю каждый ответ.