0
我有兩個模型,Designer和Influence。 他們對彼此有一個「has_many」關係:通過一個稱爲Relation的連接模型。在has_many中更新模型:通過關聯
我想用單個表單來創建/更新來自影響模型的信息的設計器模型。是否可以通過設計器控制器中的創建/更新操作創建關係對象?或者我需要創建一個關係控制器?
我的當前代碼如下,並在DesignersController#Update中導致NoMethodError。
Designer.rb
attr_accessible :name, :relation, :influence
has_many :relations
has_many :influences, :through => relations
Influence.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
名設計師/ _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? **
謝謝@ jordanpg。我會選擇第一個,因爲我不想創造任何新的影響,但是想通過新的關係向現有和新設計師添加現有的影響力。對於第一個示例,如何從設計器表單中的collection_select輸入引用influence_id?我在我的設計者控制器中添加了以下內容到我的更新方法中。 Relation.create(designer_id:current_designer.id,influence_id :: influence_id)這種說法不正確嗎? – umezo 2012-08-06 21:44:53
在'collection_select'語句中,您已經引用了'influence_id':'Influence.order(:name),:id,:name'。例如,如果您想引用與@designer對象關聯的'influence_id',請執行:'f.object.influences.first'。另外,如果你對此感到滿意,不要忘記接受答案。 – jordanpg 2012-08-06 21:52:57
嗨@jordanpg,我會盡快接受該工作。對於新手問題抱歉...對於第一種選擇,定義「關係屬性」的最佳方法是什麼?除了向designers_controller中的update方法添加「Relation.create relation_attributes」之外,我保留了所有文件不變。這給了我「未定義的局部變量或方法'relation_attributes'」。你能幫我理解我在哪裏以及如何定義這個? – umezo 2012-08-06 22:12:38