2014-01-15 78 views
0

我使用這個寶石我的形式:單獨的模型日期字段和驗證軌道

https://github.com/plataformatec/simple_form

我有3個輸入字段爲每一天,一個月,一年:

= f.input :dob_day, label_html: {style: 'display:none'}, placeholder: 'DD' 
= f.input :dob_month, label_html: {style: 'display:none'}, placeholder: 'MM' 
= f.input :dob_year, label_html: {style: 'display:none'}, placeholder: 'YYYY' 

在我的模型(重要的一點)我試圖建立出生日期的驗證:

class User < ActiveRecord::Base 

attr_writer :dob_day, :dob_month, :dob_year 

    def dob_day 
    @dob_day 
    end 

    def dob_month 
    @dob_month 
    end 

    def dob_year 
    @dob_year 
    end 

user.validates :dob_day, presence: true 
user.validates :dob_month, presence: true 
user.validates :dob_year, presence: true 
user.validates :dob, presence: true, 
date: { before: Proc.new { Time.now - 18.years }, message: ": You must be over 18 to join" } 

現在我得到的錯誤:

無法大規模指派保護的屬性:dob_day,dob_month,dob_year

我想注入DOB場與dob_day,dob_month,dob_year值。我會盡可能在模型中,如果可能的話,而不是在控制器中

我是否這樣做是錯誤的?這應該是相當簡單的,但事實證明它不是

+0

刪除此'爲:日期,START_YEAR :Date.today.year - 90,end_year:Date.today.year - 18,order:[:month,:year,:day]' –

+0

爲了防止批量分配錯誤,您需要添加:attr_accessible:dob_day ,:dob_month,:dob_year – vidaica

回答

0

你可以刪除

as: :date, start_year: Date.today.year - 90, end_year: Date.today.year - 18, order: [:month, :year, :day] 

,然後你可以使用jquery date picker用於顯示日曆選擇DOB