1
我有一個嵌套的表格Rails的驗證孩子與父母
船員可以有很多的會議,會議可以屬於一個船員。 一個船員和一個會議都可以設置gender_id屬性。
我想一個錯誤添加到會議對象時Crew.meeting_id!= Meeting.gender_id
我寫了一個簡單的校驗
class MeetingGenderValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
if record.gender_id != record.crew.gender_id
msg = :wrong_gender
case record.crew.gender_id
when 1 then
msg = :crew_woman_only
when 2 then
msg = :crew_man_only
record.errors.add(attribute, msg, options)
end
end
end
end
的問題是,當運行這個驗證,記錄變量(我們的會議模式),還沒有跟劇組模型相關聯,所以我得到關於調用Nil.gender_id
這裏的錯誤是會議模式的一部分:
class Meeting < ActiveRecord::Base
belongs_to :crew
validates :gender_id, :meeting_gender => true
end
這裏是船員模型與協會部分:
class Crew < ActiveRecord::Base
has_many :meetings
accepts_nested_attributes_for :meetings
end
我的船員#創建動作片段(控制器):
class CrewsController < ApplicationController
def create
@crew = Crew.new(params[:crew]) # here are the meeting params too
@crew.user = current_user # assigning the user from session/not important here
if @crew.save
......
end
end
爲什麼你首先複製了gender_id?您可以通過以下方式在會議中找到Crew的gender_id:meeting.crew.gender_id – 2011-01-14 19:34:32