gpt4 book ai didi

ruby-on-rails - 将属性插入连接表

转载 作者:行者123 更新时间:2023-11-29 12:52:24 25 4
gpt4 key购买 nike

每当我通过我的 AR 模型进行插入时,我想将一个值插入到连接表属性中。我正在对所有受影响的模型使用 HMT 关联。

安排如下...我有一个accounts表模型:

class TabAccount < ApplicationRecord
has_many :tab_client_project_accounts
has_many :tab_projects, through: :tab_client_project_accounts
end

使用连接表模型:

class TabClientProjectAccount < ApplicationRecord
belongs_to :tab_account
belongs_to :tab_project
end

加入项目表模型:

class TabProject < ApplicationRecord
has_many :tab_client_project_accounts
has_many :tab_accounts, through: :tab_client_project_accounts
end

在我的 Controller 中,我使用 shovel 运算符(operator)向项目添加帐户:

@this_project.tab_accounts << _new_account unless @this_project.tab_accounts.include?(_new_account)

它按设计工作。但我还想在我的 tab_client_project_accounts 连接表中插入一个值,作为该铲子运算符(operator)的一部分。那可能吗?执行此操作的常规最佳做法是什么?

最佳答案

如果您需要连接表中的更多列 <<方法(不显式使用连接表)将不起作用,因为它没有设置任何附加属性。您可以改用连接模型:

您的版本(没有连接表):

@this_project.tab_accounts << _new_account unless @this_project.tab_accounts.include?(_new_account)

使用连接表:

@this_project.tab_client_project_accounts.build(
tab_account: _new_account,
additional_data: 'anything_you_need'
) unless @this_project.tab_accounts.include?(_new_account)

关于ruby-on-rails - 将属性插入连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50779807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com