2011-10-25 5 views
0

私は完全なレールのnoobだから、おそらくここでは非常にシンプルなものがあります。私はマイクロポストと呼ばれるこれらの小さなツイートタイプのものを持っています、そして、私は各マイクロポストにユーザーが設定したリリース日を持つことを望みます。新しいマイクロポストを作成するとフォームが正常に表示され、ブラウザにエラーが表示されませんが、リリース日はデータベースに保存されていません。新しいmicropostを作成するために、私の形式では、私はこれがあります:私はRELEASE_DATEを作っ レール3カスタム日付は保存されません

create_table "microposts", :force => true do |t| 
    t.string "content" 
    t.integer "user_id" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.datetime "release_date" 
    end 

がそうのように私のMicropostモデルでアクセス属性:私のデータベーススキーマで

<div class="field"> 
    <%= f.label :release_date %> 
    <%= f.text_field :release_date, :size => 10 %> 
</div> 

を、私はこれを持っている

attr_accessible :content, :release_date 

そして、私のMicropostコントローラの私の作成方法は、次のようになります。

def create 
    @micropost = current_user.microposts.build(params[:micropost]) 
    if @micropost.save 
    flash[:success] = "New event created." 
    redirect_to root_path 
    else 
    render 'pages/home' 
    end 
end 

他のすべてはうまく保存されます。無視されるように見えるのはリリース日だけです。これは単なる推測ですが、10/25/2011のようなものでdatetimeとして保存されていますか?または、それは文字列として保存され、適切な日時フォーマットに解析されるはずですか?

答えて

0

評価するためにここに欠落している情報がたくさんあります。 paramsハッシュはおそらく値を持たないか、またはそれがレールによって予期される方法でハッシュされていません。あなたのUserモデルで

は、あなたが持っているん:

accepts_nested_attributes_for :microposts 

をまた、あなたはレールでのform_forとfields_for上のチュートリアルを見たいと思うでしょう。

0

多分あなたは日付を入力しているフォーマットが適切にdatetime型としてキャスト取得されていません。

def Micropost < ActiveRecord::Base 
    before_validation_on_create :convert_release_date_to_datetime 

    private 

    def convert_release_date_to_datetime 
     self.release_date = Time.parse(release_date) 
    end 
end 
関連する問題