Имею модель "Пост". И форма для создания новой записи.
<%= form_for(@post) do |f| %>
<% if @post.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>
<ul>
<% @post.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :title %><br>
<%= f.text_field :title %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
И у меня есть возможность голосования за публикацию, для которой я хочу установить значение по умолчанию 1. Как я могу это сделать?
Моя миграция с помощью change_column_default
class CreatePosts < ActiveRecord::Migration
change_column_default :posts, :suit, false
change_column_default :posts, :vote, 1
def change
create_table :posts do |t|
t.string :title
t.string :url
t.string :tags
t.boolean :suit
t.integer :vote
t.timestamps null: false
end
end
end
2 ответа
Если "голосование" является атрибутом базы данных и вы хотите, чтобы он был по умолчанию равен "1", вам следует использовать миграцию, чтобы установить значение по умолчанию в схеме базы данных:
class SetPostVoteDefault < ActiveRecord::Migration
change_column_default :posts, :vote, 1
end
Если вы хотите сделать это явно через новую миграцию, в терминале:
rails g migration change_vote_default_in_posts
В файле миграции:
class ChangeVoteDefaultInPosts < ActiveRecord::Migration
def up
change_column_default :posts, :vote, 1
end
def down
change_column_default :posts, :vote, nil
end
end
В терминале:
rake db:migrate
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.