как отвергнуть сообщения проверки допустимости модели в рельсах 3

I have a model,group_question_answer.rb

class GroupQuestionAnswer < ActiveRecord::Base
  belongs_to :group_question
  validates_presence_of :answer 
  validates_presence_of :answer_question    

end

for attribute answer and answer_question i get error message as Group question answers answer can't be blank I need to show only answer cant be blank.i even tried adding :message=>"cant be blank",but still i dont get my required message.how can i remove model name and can just arrtibute error message ....

2
добавлено
Просмотры: 1
de
Вы проверенный это? Метод обрисован в общих чертах здесь.
добавлено автор barerd, источник

3 ответы

class GroupQuestionAnswer < ActiveRecord::Base
  attr_accessible :answer
  validate do |group_question_answer|
    errors.add(:base, "answer can't be blank") if group_question_answer.answer.blank?
  end
end

работы отлично

rails c
Loading development environment (Rails 3.2.9)
irb(main):001:0> q = GroupQuestionAnswer.create
   (0.1ms)  begin transaction
   (0.1ms)  rollback transaction
=> #
irb(main):002:0> q
=> #
irb(main):003:0> q.save
   (0.1ms)  begin transaction
   (0.1ms)  rollback transaction
=> false
irb(main):004:0> q.errors
=> #, @messages={:base=>["answer can't be blank"]}>
irb(main):006:0> q.errors.messages
=> {:base=>["answer can't be blank"]}

=> {:base=>["answer can't be blank"]}

irb(main):007:0> q = GroupQuestionAnswer.create(answer: "123")
   (0.1ms)  begin transaction
  SQL (9.0ms)  INSERT INTO "group_question_answers" ("answer", "created_at", "updated_at") VALUES (?, ?, ?)  [["answer", "123"], ["created_at", Fri, 28 Dec 2012 11:01:38 UTC +00:00], ["updated_at", Fri, 28 Dec 2012 11:01:38 UTC +00:00]]
   (1.1ms)  commit transaction
=> #
irb(main):008:0> q.errors.messages
=> {}

По-моему, утвердите лучший способ метода полностью настроить проверки рельсов, и это делает точно, что вы просите.

4
добавлено
спасибо Евгений.. я попробовал, но я получаю неопределенный метод 'add_to_base' для #
добавлено автор Milind, источник
я попробовал.. group_question_answer.errors [: основа] <<, "Пожалуйста, ответьте....".. но я получаю ту же самую ошибку как основа ответов вопроса о Группе, Пожалуйста, ответьте....
добавлено автор Milind, источник
Спасибо Евгений для быстрого ответа..., но после осуществления вашего предложения.. я получил обычную ошибку, поскольку ответы вопроса о Группе основывают can' t быть чистым
добавлено автор Milind, источник
я получаю это сообщение в пульте..
добавлено автор Milind, источник
да.. это в моем answer.rb... утверждает: ответ: присутствие => верный....
добавлено автор Milind, источник
да жаль... Я должен был быть проверенной документацией сам сначала:) отредактированный ответ, проверьте снова
добавлено автор Eugene Rourke, источник
отредактированный снова, добавленный пример использования
добавлено автор Eugene Rourke, источник
я don' t понимают! каким образом вы получаете то же самое сообщение? сделал вы удаляете "validates_presence_of: ответ"?
добавлено автор Eugene Rourke, источник
Где вы получали это сообщение в пульте или в поле зрения?
добавлено автор Eugene Rourke, источник
сделал вы удаляете "validates_presence_of: ответ"?
добавлено автор Eugene Rourke, источник
удалите это также. оставьте только линию от моего примера, если вы хотите заставить его работать
добавлено автор Eugene Rourke, источник

Можно попробовать как это:

validates :answer, presence: { message: ''}
validates :answer_question, presence: { message: ''}
3
добавлено
Спасибо jizak.. я попробовал, утверждает: ответ: присутствие => {: сообщение => ' пожалуйста, answer'} .but все еще я получаю ту же самую обычную полную ошибку.. Ответ ответов вопроса о группе, пожалуйста, ответьте
добавлено автор Milind, источник
Это происходит из-за full_messages метода. Можно повторить через ошибки проверки как мешанина model.errors.each, делают |attr, сообщение | РЕДАКТИРУЕТ: full_messages метод автоматически помещает название атрибута перед сообщением об ошибке. Повторяя использующий каждого можно полностью опустить название атрибута или можете поместить его в другое место.
добавлено автор Darren Coxall, источник
можно ли добавить код, как вы показываете ошибку?
добавлено автор jizak, источник

Попытайтесь добавить их в своем config/locales/en.yml файле

Поскольку там можно сделать что-то вроде этого,

en:
  errors:
    messages:
      answer: answer can't be blank
0
добавлено