ruby-on-rails - ActiveRecord::RecordInvalid 验证失败:帐户必须存在

标签 ruby-on-rails ruby

使用 ruby​​ 2.6 和rails 5.2 Rails 控制台中的用户创建引发

ActiveRecord::RecordInvalid (Validation failed: Account must exist)

我刚刚生成了 Devise User,所以暂时没有 user_controller

型号

用户.rb

class User < ApplicationRecord
   belongs_to :account
end

账户.rb

class Account < ApplicationRecord
    has_many :users
end

Controller

accounts_controller.rb

class AccountsController < ApplicationContoller
     def new                     
       redirect_to root_path       
       unless current_user.account.nil?
       @account = Account.new       
    end
     def create                   
      @account = Account.new(account_params)          
      if @account.save            
      current_user.account = @account                     
      current_user.save
      redirect_to root_path, success: "Your account has been created!"               
  else                         
      render :new                  
    end                        
  end
........
end

最佳答案

对于 Rails 5,默认情况下需要 belongs_to 关联。因此您应该将该帐户设置为可选。

belongs_to :account, optional: true

关于ruby-on-rails - ActiveRecord::RecordInvalid 验证失败:帐户必须存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57682556/

相关文章:

ruby-on-rails - 无法识别 ubuntu 终端中的 rails ,但在 aptana 终端中

javascript - removeClass 如果 addClass 单击?

Ruby 输出到与上一个输出相同的行

mysql - 将 SQL 查询转换为 Rails

ruby - 如何使用后续 ORM 和 postgresql 对 sum 和 count 进行分组?

mysql - 可以通过事件记录中关联的计数来排序吗?

mysql pivot 到 postgres 数据透视表

ruby-on-rails - 重命名的 active_admin 资源的可选 belongs_to

ruby-on-rails - 在 Rails 中渲染 json 时,如何从包含的关联中排除条目?

ruby-on-rails - 包含模块时出现 "Uninitialized constant"错误