我有两个模型:Product
和Category
,我想将它们结合在一起。
假设每个产品都有一个唯一的类别,每次用户创建新的Category
对象时,如何设置Rails创建(或生成)新的Product
对象?
答案 0 :(得分:2)
首先,如果某个类别属于某个产品,那么为什么不将它添加到产品型号中呢?但是如果你坚持你想要编码的方式,你可以利用after_create
之类的回调,并编写用于在那里创建类别的代码。这样,无论何时创建产品,都会在此过程中创建关联的类别。
class Product < ActiveRecord::Base
has_one :category
after_create :create_category
private
def create_category
# code for creating an associated category
end
end
注意:大多数情况下,我需要为数据库中的用户保存手机号码,并且每个用户都有一个唯一的手机号码 - 因此我不会为手机号码定义新的型号,而是倾向于将其用于用户表。但是,如果手机号码的信息像其运营商名称一样扩展,国家代码 - 我肯定会将其拆分为一个单独的表格。
答案 1 :(得分:2)
class Product < ActiveRecord::Base
after_create do
Category.create product: self
end
has_one :category
end
class Category < ActiveRecord::Base
belongs_to :product
end
并在控制台中
> a= Product.create
> a.category
=> #<Category id: 1, product_id: 5, created_at: "2015-11-04 12:53:22", updated_at: "2015-11-04 12:53:22">