Добавить поле таблицы по умолчанию при создании нового объекта Ruby on Rails 3 - PullRequest
0 голосов
/ 08 сентября 2011

Мои модели: Projects has_many Feeds. Я только что добавил столбец в свою таблицу Feeds под названием feed_error. В настоящее время у меня есть форма в приложении, которая создает новый канал при вводе. Я хочу иметь возможность установить 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 Ответ

1 голос
/ 08 сентября 2011

У вас есть пара вариантов. В вашем контроллере вы можете сделать:

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

к вашей миграции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...