【问题标题】:assign a default value for column ruby on rails为 rails 上的 ruby​​ 列分配默认值
【发布时间】:2013-10-31 12:16:38
【问题描述】:

我已经为用户创建了一个迁移,后来我使用

将列添加到我的模型中

rails 生成迁移 add_usertype_to_users usertype:string 生成以下

class AddUsertypeToUsers < ActiveRecord::Migration
  def change
    add_column :users, :usertype, :string
  end
end

现在我正在尝试将此用户类型的默认值作为基本类型。

最好在哪里为该列分配默认值,即在迁移内部、在我的模型内部,还是我必须创建新的迁移?我想出的所有示例都是在创建列时创建迁移时提供默认值,请让我知道正确的方法。 提前致谢

【问题讨论】:

    标签: ruby-on-rails ruby activerecord model migration


    【解决方案1】:

    在迁移中设置默认值更好。

    你可以像这样定义默认值

    class AddUsertypeToUsers < ActiveRecord::Migration
      def change
        add_column :users, :usertype, :string, default: 'value'
      end
    end
    

    【讨论】:

    • 我尝试添加默认值,如您的代码中所示,但是当我尝试创建新记录时,我的用户类型列中没有显示默认值。
    • 我是否必须创建新的迁移,或者我应该在当前迁移中进行更改并应该使用bundle exec rake db:migrate
    • 你应该回滚 add_column 迁移.. 然后运行 ​​rake db:migrate with default
    【解决方案2】:

    add_column :users, :usertype, :string, :default =&gt; "your_text"

    【讨论】:

    • 我尝试添加默认值,如您的代码中所示,但是当我尝试创建新记录时,我的用户类型列中没有显示默认值。
    • 我是否必须创建新的迁移,或者我应该在当前迁移中进行更改并应该使用bundle exec rake db:migrate
    • 是的,兄弟,您必须为该列创建新的迁移指定默认值...就像这样:def up change_column :users, :user_type :string, :default =&gt; 'your_string' end
    • 这段代码应该在你的新迁移文件中,rake db:migrate 然后
    猜你喜欢
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    相关资源
    最近更新 更多