同时创建两个不同的对象(来自不同的模型) - Rails

时间:2015-11-04 11:42:50

标签: ruby-on-rails models

我有两个模型:ProductCategory,我想将它们结合在一起。 假设每个产品都有一个唯一的类别,每次用户创建新的Category对象时,如何设置Rails创建(或生成)新的Product对象?

2 个答案:

答案 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">