0

ユーザーが 2 つの「タグ」オブジェクト間に「リンク」関係を作成できるようにしようとしています。

鬼ごっこ

class Tag < ActiveRecord::Base
attr_accessible :ref, :location_info
belongs_to :user

has_many :to_links, :foreign_key => 'from_id', :class_name => 'Link' 
has_many :to_tags, :through => :to_links  

has_many :from_links, :foreign_key => 'to_id', :class_name => 'Link' 
has_many :from_tags, :through => :from_links
end

リンク

class Link < ActiveRecord::Base
attr_accessible :from_id, :to_id, :value

belongs_to :from_tag, :foreign_key => "from_id", :class_name => "Tag" 
belongs_to :to_tag, :foreign_key => "to_id",   :class_name => "Tag"
end

リンクコントローラー

class LinksController < ApplicationController

def new
  @user = current_user
  @tags = @user.tags
  @link = Link.new
end

def create

end

new.html.erb

<%= form_for(@link) do |f| %>
<%= render 'shared/error_messages', object: f.object %>

  <%= f.label :from_tag %>
  <%= f.collection_select :from_tag, @tags, :id , :ref %>

  <%= f.label :to_tag %>
  <%= f.collection_select :to_tag, @tags, :id , :ref %>

  <%= f.label :value %>
  <%= f.text_field :value %>

  <%= f.submit "Create", class: "btn btn-large btn-primary" %>
<% end %>

通常、create メソッドでは params[:link] を new に渡し、create をクリックした後にフォームからこれらを受け取ることはわかっていますが、from_tag と to_tag を一括で割り当てることができないため、作成方法がわかりません。このような一括割り当てなしでコンソールで行うように、このリンクオブジェクト

a = Tag.new | b = Tag.new | リンク = Link.new | link.from_tag = a | link.to_tag = b | リンク値 = 5 | リンク保存

4

1 に答える 1

0

リンクモデルに次を追加してみてください:
attr_accessible:from_tags_attributes、:to_tags_attributes

于 2013-03-11T05:08:33.200 に答える