【问题标题】:Why can't I create an ActiveRecord entry like this?为什么我不能像这样创建 ActiveRecord 条目?
【发布时间】:2017-01-31 03:04:21
【问题描述】:

我有两个关联的模型:

Class User < ApplicationRecord
  has_many :company_accounts
end

Class CompanyAccount < ApplicationRecord
  belongs_to :users
end

我想为现有用户创建一个 CompanyAccount。这有效:

@user.company_accounts.create

为什么这不起作用?

CompanyAccount.create(user_id: @user.id)

完整的错误消息是“用户必须存在”。我正在使用 Rails 5.0.1。

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    试试belongs_to :user,它只有一个用户,不多。

    【讨论】:

    • 这行得通,非常感谢!你能解释一下为什么当我使用:users 时第一个命令有效而第二个无效?
    • 我不确定 100% 但首先你有 @user.company_accounts.create 所以 Rails 正在为你构建一个正确的查询,其次你有 CompanyAccount.create 所以你没有用户this 范围属性。您可以使用以下方法复制它:company_accounts = CompanyAccount.where(user_id: @user.id),然后是 company_accounts.create。它在其他方面有如此触动belongs_to,但我现在无法复制它,所以我不确定区别在哪里。
    • 好吧,我找到了某种解释 blog.bigbinary.com/2016/02/15/…,据我所知,rails 正在寻找模型“用户”来比较它并找到合适的“用户”,但你有模型“用户”所以它不能找到它,错误有点误导。首先,您已经在作用域属性中定义了用户,因此 rails 5 不会寻找他。 (用户有一个正确的关联名称)
    猜你喜欢
    • 2015-01-25
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 2015-09-09
    相关资源
    最近更新 更多