Ассоциация Ruby on Rails HABTM не обновляет таблицу соединений - PullRequest
1 голос
/ 25 февраля 2012

У меня много-много ассоциаций тегов и пользователей. когда я создаю тег, моя таблица соединений не обновляется, я думаю, что с контроллером что-то есть ..

модель тега

class Tag < ActiveRecord::Base
  validates :tag, :presence => true
  has_and_belongs_to_many :user, :join_table => "tags_users"
end

модель пользователя

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable

  attr_accessible :email, :password, :password_confirmation,:remember_me

  has_and_belongs_to_many :tag, :join_table => "tags_users"
end

tags_controller

class TagsController < ApplicationController
  before_filter :authenticate_user!, :except => [:index, :show]

  def create
    @tag = Tag.new(params[:tag])

    respond_to do |format|
      if @tag.save
        format.html { redirect_to tags_path, notice: 'Tag was successfully created.' }
        format.json { render json: @tag, status: :created, location: @tag }
      else
        format.html { render action: "new" }
        format.json { render json: @tag.errors, status: :unprocessable_entity }
      end
    end
  end
end

1 Ответ

1 голос
/ 25 февраля 2012

Вы никогда не объединяете созданного tag и текущего пользователя из того, что я вижу.

@tag = Tag.new(params[:tag])
@tag.users << current_user

Кроме того, обычно аргумент has_and_belongs_to_many является множественным, например has_and_belongs_to_many :users

...