Ruby on rails 在创建Rails 5后将帐户所有者id附加到记录

Ruby on rails 在创建Rails 5后将帐户所有者id附加到记录,ruby-on-rails,Ruby On Rails,我正在用Ruby 2.4.0构建Rails 5应用程序 我正在创建帐户创建页面,用户在其中以相同的形式创建他们的帐户和用户。我想做的是将owner\u id owner作为一个用户类附加起来。这些关系的工作方式与创建帐户时一样,它将帐户id分配给所有者,但它不会将所有者id分配给帐户。当我创建新帐户和用户时,我可以在rails控制台中调用它们a=account.last显示帐户详细信息,但owner\u id设置为nil,当我在控制台中运行a.owner时,它会将帐户id显示为1,这是正确的 我

我正在用Ruby 2.4.0构建Rails 5应用程序

我正在创建帐户创建页面,用户在其中以相同的形式创建他们的帐户和用户。我想做的是将owner\u id owner作为一个用户类附加起来。这些关系的工作方式与创建帐户时一样,它将帐户id分配给所有者,但它不会将所有者id分配给帐户。当我创建新帐户和用户时,我可以在rails控制台中调用它们a=account.last显示帐户详细信息,但owner\u id设置为nil,当我在控制台中运行a.owner时,它会将帐户id显示为1,这是正确的

我正在尝试以下回调,以便在创建后将所有者id设置为帐户:

Account.rb模型

我还在accounts_controller创建操作中尝试了以下操作:

  def create
    @account = Account.new(account_params)

    if @account.valid?
      @account.owner_id = @account.owner.id
      @account.owner.role = 1
      @account.save
      redirect_to root_path, notice: 'Company subdomain created successfully.'
    else
      render action: 'new', alert: 'There was a problem. Please try again.'
    end
  end
我的关系如下:

Account.rb
  has_one :owner, class_name: 'User'
  has_many :users

User.rb
belongs_to :account
我们将非常感谢您的帮助

@account是属于控制器类实例的实例方法

@在用户中使用的account是用户对象的实例方法。这是一个完全不同的字段,用户对象中的值将为“nil”,除非在用户对象的方法中的某个位置为其赋值

关系的默认键将是用户实例中的account_id。如果它存在并且具有帐户id,则my_account.owner将通过构建适当的查询自动工作,以检索帐户id=my_account.id的用户表记录


总之,您不需要所有者id。您可以通过迁移将其删除。has\u one关系自动使用目标类中的帐户id来查找关联的记录。

您是否尝试在模型中使用此@account作为控制器?它只是在控制器中定义的吗?它已经从控制器中删除了。我刚才用问题中的控制器来展示我已经尝试过的东西。它仅在模型中使用,如问题顶部的方法所示。感谢您用英语为我解释这一点!我已经为这件事绞尽脑汁一段时间了!Rails魔法心灵扭曲。。。
Account.rb
  has_one :owner, class_name: 'User'
  has_many :users

User.rb
belongs_to :account