0

「ブランド」「モデル」「サブモデル」および「スタイル」を取るネストされたフォームがあります...現在、特定のブランド+モデル+サブモデルの組み合わせに対して複数のスタイルがあります..しかし、再保存したくありませんデータベースで同じブランド名 (またはモデルまたはサブモデル) が 2 回..

したがって、上記の状況を考えると、db 内のブランド名が一意であることを確認するために、コントローラーの CREATE アクションで何をする必要がありますか?

また、保存された「スタイル」は、既存のサブモデル オブジェクト (同じサブモデル名を持つ) がサブモデル テーブルに既にリストされている場合、そのサブモデル ID を採用する必要があります。

アップデート:

ここに画像の説明を入力

ネストされたフォームで xy と z を保存できるようにし、次のようにします。

Panasonic (保存されませんが、ID が読み取られ、model x が brand_id として保存されます) X (Panasonic から brand_id で保存されます) Y (モデル X から model_id で保存されます) Z (Y から submodel_id で保存されます)

もちろん、Model X が既に存在する場合は、

Panasonic (未保存) X (未保存) Y (X の ID を model_id として保存) Z (Y の新しい ID を submodel_id として保存)

これでどこに行くかわかりますか?=)

4

2 に答える 2

0

これは私がしなければならなかったことです:

@brand1 = params[:brand][:name]
@model = params[:brand][:models_attributes]["0"]["name"]
@submodel = params[:brand][:models_attributes]["0"]["submodels_attributes"]["0"]["name"]
@style = params[:brand][:models_attributes]["0"]["submodels_attributes"]["0"]["styles_attributes"]["0"]["name"]

a = Brand.find_or_create_by_name(@brand1)
b = Model.find_or_create_by_name(@model, :brand_id => a.id)
c = Submodel.find_or_create_by_name(@submodel, :model_id => b.id)
d = Style.new(:name => @style, :submodel_id => c.id)
d.save
于 2012-04-08T09:35:46.567 に答える
0

私があなたの質問を正しく理解していれば、属性ブランド、モデル(これを別の名前にする必要があります)、サブモデル、スタイルを持つ製品モデルのようなものがあります。これを行うには、次のモデルを作成します。

class Brand < ActiveRecord::Base
  has_many :products
end

class Primodel < ActiveRecord::Base
  has_many :products
  has_many :submodels
end

class Submodel < ActiveRecord::Base
  has_many :products
end

class Style < ActiveRecord::Base
  has_many :products
end

class ProductsStyles < ActiveRecord::Base
  belongs_to :product
  belongs_to :style
end

class Product < ActiveRecord::Base
  belongs_to :primodel
  belongs_to :submodel
  belongs_to :brand
  has_many :products_styles
  has_many :styles, :through => :products_styles
end

これにより、ブランド、モデル、サブモデル、およびスタイルを作成して再利用できるようになります。各製品は最初の 3 つのそれぞれの 1 つだけを持つように制限されますが、複数のスタイルを持つことができます。

于 2012-04-07T22:02:56.383 に答える