質問

私はhas_manyのタスクそのミッションのモデルがあり、ミッションbelongs_toのタスク

セキュリティのために、私は、タスクモデルでこの検証を行いました

  validates_presence_of :mission_id
  validates_numericality_of :mission_id

しかし、問題は時にミッションを作成し、このようにタスクを追加することです。

 @mission.tasks.build
タスク上のミッションIDがヌル(ミッションがまだ作成されていない)

であるため、

の検証は、エラーを返し 私は検証を削除する場合は

は、ミッションとタスクがsuccessfuly作成されますが、どのように私は検証を保つことができる、まだこの仕事を持っていますか? 保存した後、私は、コールバックを行うことができますが、私はmission_idせずに作業を保存したくないので、私は、そうではないと思う。

P.S。 私は、フォーム上の私の使命フィールドをhiddingよ。私はそれが表示されている場合、それはcurrectミッションが表示され、すべてがOKです。私はそれをhidde場合でも、エラーが発生します。

<%=  f.hidden_field :mission, :label => "Missão" %>
新しいアクションをコントローラで指定された属性をresetingフォームですか?

役に立ちましたか?

解決

Mission.rbに、次の使用

has_many :tasks
validates_associated :task

Task.rb

belongs_to :mission
コントローラ

@mission=Mission.new(params[:mission])  
task= @mission.tasks.build(params[:task]) ###this is same as Task.new(:mission_id=>@mission.id)

if @mission.save #this will save only when mission as well as task are valids, also it will automatically assign mission_id to tasks table you have nothing to worry about it<br>
else
    #your error code will be here.......
end

参考: - http://api.rubyonrails.org/classes/ ActiveRecordの/検証/ ClassMethods.htmlする

他のヒント

ネストされた属性を検証する際、あなたは次の検証を行う必要があります:

 validates_associated   :mission
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top