2

モデルgroup_question_answer.rbがあります

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

end

属性の場合answer、 .i のみを表示する必要があるanswer_questionため、エラー メッセージが表示されます。追加しようとしましたが、必要なメッセージが表示されません。Group question answers answer can't be blankanswer cant be blank:message=>"cant be blank"

4

3 に答える 3

5
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
=> #<GroupQuestionAnswer id: nil, answer: nil, created_at: nil, updated_at: nil>
irb(main):002:0> q
=> #<GroupQuestionAnswer id: nil, answer: nil, created_at: nil, updated_at: nil>
irb(main):003:0> q.save
   (0.1ms)  begin transaction
   (0.1ms)  rollback transaction
=> false
irb(main):004:0> q.errors
=> #<ActiveModel::Errors:0x007fc2fb325fa8 @base=#<GroupQuestionAnswer id: nil, answer: nil, created_at: nil, updated_at: nil>, @messages={:base=>["answer can't be blank"]}>
irb(main):006:0> q.errors.messages
=> {:base=>["answer can't be blank"]}

=> {:base=>["答えを空白にすることはできません"]}

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
=> #<GroupQuestionAnswer id: 1, answer: "123", created_at: "2012-12-28 11:01:38", updated_at: "2012-12-28 11:01:38">
irb(main):008:0> q.errors.messages
=> {}

私の意見では、validate メソッドは Rails のバリデーションを完全にカスタマイズするための完璧な方法であり、まさにあなたが求めていることを実行します。

于 2012-12-28T10:14:08.387 に答える
3

次のように試すことができます:

validates :answer, presence: { message: '<Your message>'}
validates :answer_question, presence: { message: '<Your message>'}
于 2012-12-28T10:10:30.787 に答える
0

config/locales/en.yml ファイルに追加してみてください

このようなことができるので、

en:
  errors:
    messages:
      answer: answer can't be blank
于 2012-12-28T10:39:57.017 に答える