Ruby on rails 当我使用model.collection.build时,是什么导致我的活动记录关联出现此错误?
在我的项目中,我有以下三个课程:Ruby on rails 当我使用model.collection.build时,是什么导致我的活动记录关联出现此错误?,ruby-on-rails,ruby,rails-activerecord,Ruby On Rails,Ruby,Rails Activerecord,在我的项目中,我有以下三个课程: class User < ApplicationRecord has_many :portfolios, dependent: :destroy has_many :positions, through: :portfolios end class Portfolio < ApplicationRecord belongs_to :user has_many :positions, dependent: :destroy end
class User < ApplicationRecord
has_many :portfolios, dependent: :destroy
has_many :positions, through: :portfolios
end
class Portfolio < ApplicationRecord
belongs_to :user
has_many :positions, dependent: :destroy
end
class Position < ApplicationRecord
belongs_to :portfolio
end
为什么会发生这种情况?我觉得这里有些东西需要学习,但我真的不明白
附录:我认为我的关联是有意义的:一个投资组合应该只属于一个用户,一个职位应该只属于一个投资组合,一个投资组合应该有多个职位,一个用户应该有多个投资组合 你需要建立这样的职位
user = User.first
portfolio_attributes = {name: 'Portfolio_1'}
position_attributes = {name: 'Postion_1'}
user.portfolios.build(portfolio_attributes).positions.build(position_attributes)
user.save!
当我运行user.positions时,我得到以下结果
user.positions
Position Load (0.6ms) SELECT "positions".* FROM "positions" INNER JOIN "portfolios" ON "positions"."portfolio_id" = "portfolios"."id" WHERE "portfolios"."user_id" = ? LIMIT ? [["user_id", nil], ["LIMIT", nil]]
=> #<ActiveRecord::Associations::CollectionProxy [#<Position id: 1, name: "Postion_1", portfolio_id: 1>]>
user.positions
仓位加载(0.6ms)选择“仓位”。*从“仓位”内部连接“仓位”。“仓位id”=“仓位”。“仓位id”中选择“仓位”。“仓位id”中选择“仓位”。“用户id”=?限制?[[“用户id”,无],“限制”,无]]
=> #
user.positions
Position Load (0.6ms) SELECT "positions".* FROM "positions" INNER JOIN "portfolios" ON "positions"."portfolio_id" = "portfolios"."id" WHERE "portfolios"."user_id" = ? LIMIT ? [["user_id", nil], ["LIMIT", nil]]
=> #<ActiveRecord::Associations::CollectionProxy [#<Position id: 1, name: "Postion_1", portfolio_id: 1>]>