我很难在模型中建立属性。我一直看到这个错误
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,我不确定该迁移将是什么样。任何帮助都太棒了!
答案 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关系,因此您必须自己创建它。