在创建新对象Ruby on Rails 3时添加默认表字段

时间:2011-09-07 21:07:40

标签: ruby-on-rails actioncontroller

我的模型是:Projects has_many Feeds。我刚刚在我的Feeds表中添加了一个名为feed_error的列。我目前在应用上有一个表单,可在输入时创建新Feed。我希望默认情况下能够将feed_error设置为false。在我的feeds_controller中,我有我的创建方法:

def create
@feed = Project.find(params[:project_id]).feeds.build(params[:feed])

respond_to do |format|
  if @feed.save
    format.html { redirect_to( :back, :notice => 'Feed was successfully created.') }
    format.xml  { render :xml => @feed, :status => :created, :location => [@feed.project, @feed] }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @feed.errors, :status => :unprocessable_entity }
  end
end
end

我在想我可以尝试将:feed_error => 'false'添加到参数中,但这似乎不起作用。如何默认设置此字段?

1 个答案:

答案 0 :(得分:1)

你有几个选择。在您的控制器中,您可以:

def create
@feed = Project.find(params[:project_id]).feeds.build(params[:feed])
@feed.feed_error = false

respond_to do |format|
  if @feed.save
    format.html { redirect_to( :back, :notice => 'Feed was successfully created.') }
    format.xml  { render :xml => @feed, :status => :created, :location => [@feed.project, @feed] }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @feed.errors, :status => :unprocessable_entity }
  end
end
end

您也可以在数据库迁移中进行设置。例如,如果您不需要空值而是希望默认值为false,则可以添加:

t.boolean "feed_error", :null => false

迁移。