如何在Rails中为模型属性创建迁移

时间:2018-07-18 19:26:41

标签: ruby-on-rails ruby ruby-on-rails-3 model

我很难在模型中建立属性。我一直看到这个错误

NoMethodError: undefined method `users' for #<ActiveRecord::ConnectionAdapters::SQLite3::TableDefinition:0x00007f9d9ad9df98>

我需要如下所示的属性:

#group.rb

class Spree::Group < ActiveRecord::Base
    has_many :users
end

#user_decorator.rb
Spree::User.class_eval do
  belongs_to :group, class_name: "Spree::Group"
end

我为group.rb运行了

rails g model Spree::Group

然后我得到了

class Spree::Group < ApplicationRecord
  has_many :users
end

我对如何添加'has_many:users'而不真正进入 模型并在那里输入。

对于user_decorator,我不确定该迁移将是什么样。任何帮助都太棒了!

1 个答案:

答案 0 :(得分:0)

您可以致电:

rails g model group user:references

这将在groups表中生成一个user_id列,并将修改group.rb模型以添加一个Emirates_to:user关系。请注意,必须手动将has_many:groups或has_one:group关系放入user.rb模型。

如果已经生成了模型,则可以使用以下内容创建迁移:

rails g迁移AddUserToGroup用户:belongs_to 会生成:

class AddUserToGroup < ActiveRecord::Migration
  def change
    add_reference :groups, :user, index: true
  end
end

这种方法的唯一区别是,不会自动创建group.rb模型中的belongs_to:user关系,因此您必须自己创建它。