検証aは、ビルド状況で協会に属しています
-
22-09-2019 - |
質問
私は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
所属していません StackOverflow