【发布时间】:2014-03-05 10:37:37
【问题描述】:
我试图了解如何在创建一个模型记录时将其 ID 存储在单独的活动记录表(在本例中为用户表)中。
基本上,我有两个模型。一个has_many :taxes 的用户和一个belongs_to: user 的税务模型。在我的应用程序中,用户只能拥有一个税务记录,目前我通过将user.id 存储在税务模型的列中并检查之前的过滤器以查看用户是否已经创建了税务记录来实现这一点(检查他们的 user.id 是否在表中。)
create_table "taxes", force: true do |t|
t.integer "user_id"
t.integer "income"
t.integer "taxes"
.....
请记住,这一切目前都在 index 操作中,这是毫无意义的,因为用户只能拥有一个税务记录,并且只能查看自己的税务记录。应该使用我假设的show 操作来完成。
现在的问题是,当用户创建他们的单一税务记录时,税务模型是这样设置的,所有这些都与税务活动记录表交互:
def store_raw_taxes
tax = Tax.new(user_id: user.id, income: income, taxes: taxes, rrsp: rrsp)
tax.save
end
为了使用show(并检查用户是否已经创建了税务记录),我想将tax_id 存储在他们所在行的实际用户表中。我创建了一个迁移AddTaxIdToUsers,它做了一个引用并向用户表添加了一个名为tax_id 的列。
我不知道如何将创建的税务记录的 ID 存储在用户表中。我猜这是一种双向关系,但我不明白在我的store_raw_taxes 函数中如何与用户模型进行交互。我猜它会在after_save 回调中完成?
在这种情况下,我还需要将belongs_to: tax 添加到用户模型吗?
【问题讨论】:
标签: ruby-on-rails model-view-controller associations