设置默认值Rails

12 浏览
0 Comments

设置默认值Rails

我有一个名为"Post"的模型,以及用于创建新记录的表单。

并且我希望在"Post"模型中的"vote"变量默认值为1。我该如何实现?

我的迁移文件中使用了"change_column_default"方法。

class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.string :title
      t.string :url
      t.string :tags
      t.boolean :suit
      t.integer :vote, default: 1
      t.timestamps null: false
    end
    change_column_default :posts, :suit, false
  end
end

表单代码如下:

<%= form_for(@post) do |f| %>
  <% if @post.errors.any? %>
    

<%= pluralize(@post.errors.count, "error") %> 阻止了保存该帖子:

    <% @post.errors.full_messages.each do |message| %>
  • <%= message %>
  • <% end %>
<% end %> <%= f.label :title %> <%= f.text_field :title %> <%= f.submit %> <% end %>

0
0 Comments

如果'vote'是一个数据库属性,并且您希望它默认为'1',您应该使用迁移来设置数据库架构中的默认值。

不要编辑现有的迁移文件,这会给其他人带来问题,尤其是在大型项目上工作。相反,生成一个新的迁移,并根据您的需求编辑该迁移文件。

0
0 Comments

在Rails中设置默认值的问题,通常出现的原因是需要更改数据库表中某个字段的默认值。解决方法是创建一个新的迁移,并在迁移文件中定义对应的修改操作。

首先,在终端中运行以下命令以创建一个新的迁移文件:

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