Имею модель "Пост". И форма для создания новой записи.

<%= 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
0
tencet 12 Мар 2015 в 14:14

2 ответа

Лучший ответ

Если "голосование" является атрибутом базы данных и вы хотите, чтобы он был по умолчанию равен "1", вам следует использовать миграцию, чтобы установить значение по умолчанию в схеме базы данных:

class SetPostVoteDefault < ActiveRecord::Migration

  change_column_default :posts, :vote, 1

end
1
Florian Eck 12 Мар 2015 в 11:20

Если вы хотите сделать это явно через новую миграцию, в терминале:

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
0
Sharvy Ahmed 12 Мар 2015 в 12:19