Ruby on rails 未定义的方法';交易';运行db:seed时用于阵列

Ruby on rails 未定义的方法';交易';运行db:seed时用于阵列,ruby-on-rails,ruby,rails-activerecord,Ruby On Rails,Ruby,Rails Activerecord,我正在尝试为我的数据库添加一些值。用户、帐户和事务类型是ActiveRecord对象。成功创建了两个用户,并在这些用户上成功创建了两个帐户。当我尝试在第二个块中执行相同的操作时,它会告诉我#的NoMethodError:undefined方法'transactions',即使第二个块中的一个put显示帐户实际上是一个# 需要“securerandom” 算了,把你全毁了 支部,全部摧毁 终点站,摧毁一切 交易。全部销毁 User.destroy\u all users=User.create!(

我正在尝试为我的数据库添加一些值。用户、帐户和事务类型是ActiveRecord对象。成功创建了两个用户,并在这些用户上成功创建了两个帐户。当我尝试在第二个块中执行相同的操作时,它会告诉我#的
NoMethodError:undefined方法'transactions',即使第二个块中的一个put显示帐户实际上是一个#

需要“securerandom”
算了,把你全毁了
支部,全部摧毁
终点站,摧毁一切
交易。全部销毁
User.destroy\u all
users=User.create!([
{
:name=>“Bob Rob”,
:email=>'br@gmail.com'
}, {
:name=>“Frank Krawlin”,
:email=>'krawlin@gmail.com'
}
])
放置用户
账户=[]
用户。每个do |用户|
账户[储蓄])
结束
记帐
事务=[]
账户。每个人都有账户|
交易“取款”,金额=>500,到期时间=>Time.now+1.day,已完成=>false}])
结束
卖出交易
branchs=Branch.create!([{:address=>'多伦多牛津街西215号,ON'}])
终端=[]
分支机构。每个机构都有分支机构|
兰特(1..4)。是的
终端安全(随机.uuid}])
结束
结束
下面是account.rb文件,其中事务被定义为具有多个关系:

class Account < ApplicationRecord
  belongs_to :user
  has_many :transactions

  validates :account_type, inclusion: {in: %w(CHEQUING SAVINGS),
                                       message: "%{value} is not a valid account type"}

  before_validation :correct_case

  protected
  def correct_case
    self.account_type.upcase!
  end
end
类帐户
我不知道发生了什么事。交易被明确定义为有许多账户。是什么导致了这个错误?我对ruby很陌生。

当你写

accounts << user.accounts.create!([{:account_type => 'SAVINGS'}])
账户“储蓄”})
在上面,您创建的不是单个帐户,而是一个具有单个帐户的数组。那么,当你说

transactions << account.transactions.create!([{:transaction_type => 'WITHDRAWAL', :amount => 500, :expires_at => Time.now + 1.day, :fulfilled => false}])
transactions'drawing',:amount=>500,:expires\u at=>Time.now+1.day,:completed=>false})

rails认为您试图使用数组中的一种方法
#transactions
,这显然是不可能的,因为数组中没有这样的方法。

您介意发布一下您是如何填充
用户和
帐户的吗?@EddeAlmeida我尝试过单独创建每个用户,但它们从来都不是问题。我调试了输出,用户创建得很好。创建的帐户也没有问题。是事务给了我问题。这在这里不容易复制,然后我会让你做一些测试。首先,请尝试执行
account.transaction.create(单数)?@EddeAlmeida它仍然说NoMethodError,只是这次它说NoMethodError:未定义的方法“transaction”用于#。我甚至尝试过用Transaction.create交换线路!然后传递account.id,但我得到了NoMethodError:undefined方法'id'for#。请在
accounts.class
之后插入一个
put account.class
并告诉我结果。
transactions << account.transactions.create!([{:transaction_type => 'WITHDRAWAL', :amount => 500, :expires_at => Time.now + 1.day, :fulfilled => false}])