0

レール 3.2.8

モデルでstart_dateは、フォームで収集されたものにアクセスできません。

# form
<div class="field">
  <%= f.label :start_date %><br />
  <%= f.date_select :start_date %>
</div>
<div class="field">
  <%= f.label :total_months %><br />
  <%= f.number_field :total_months %>
</div>


# model
attr_accessible :expire_date, :start_date, :total_months

def total_months=(total)
  write_attribute :expire_date, start_date + 3.months
end

nilを返すため、nilエラーが発生します。start_datestart_date を日付形式で取得するにはどうすればよいですか?

4

1 に答える 1

1

メソッドは属性の set メソッドのみをオーバーライドし、total_months属性が設定される前または後に設定されるかどうかはわかりませんstart_date(ビューで指定された順序で発生しない場合があります)。write_attribute :expire_date, start_date + 3.monthsコールバックで実行してみてくださいbefore_save

次のようなものです:

before_save :do_before_save

def do_before_save
  self.expire_date = start_date + 3.months if start_date
end
于 2013-06-28T02:05:01.930 に答える