0

デザイナーとインフルエンスの2つのモデルがあります。それらは互いに「has_many」関係を持っています:Relationと呼ばれる結合モデルを介して。

単一のフォームを使用して、影響モデルからの情報を使用してデザイナーモデルを作成/更新したいと思います。デザイナコントローラの作成/更新アクションを介してリレーションオブジェクトを作成することは可能ですか?または、Relationsコントローラーを作成する必要がありますか?

私の現在のコードは次のとおりで、DesignersController#UpdateでNoMethodErrorが発生します。

Designer.rb

attr_accessible :name, :relation, :influence
has_many :relations
has_many :influences, :through => relations

Impact.rb

attr_accessible :name, :relation, :designer
has_many :relations
has_many :designers, :through => :relations

Relation.rb

attr_accessible :designer_id, :influence_id
belongs_to :designer
belongs_to :influence

Designers / _form.html.erb

<%= form_for @designer do |f| %>

  <%= f.label :name %><br />
  <%= f.text_field :name %>

  <%= f.label :influence %><br />
  <%= f.collection_select :influence, Influence.order(:name), :id, :name, include_blank: true %>

  <%= f.submit %>

<% end %>

Designers_controller.rb

def update
  @designer = current_designer
  ** Is there a way to create a new relation object here? **
4

1 に答える 1

1

これを行う一般的な方法は2つあります。Relationsオブジェクトを直接作成することも、Designerアソシエーションを使用してInfluenceオブジェクトを作成することもでき、1つは自動的に作成されます。

Relation.create relation_attributes

また

@designer.influences.create influence_attributes(これにより、新しいRelationオブジェクトが作成されます)

于 2012-08-06T21:07:57.317 に答える