Проблема при использовании counter_cache с ключом primary_key, отличным от id - PullRequest
1 голос
/ 28 февраля 2012

Я использую Ruby on Rails 3.1, и я хотел бы counter_cache belongs_to связать с primary_key, то есть , а не общим ключом id, и правильно запустить связанные миграции вЧтобы добавить счетчик функций.

То есть у меня есть следующие классы:

class User < ActiveRecord::Base
  belongs_to :authorization,
    :class_name    => 'Authorization',
    :foreign_key   => 'authorization_name',
    :counter_cache => :users_count
end

class Authorization < ActiveRecord::Base
  self.primary_key = "name"

  has_many :users,
    :class_name  => 'User',
    :primary_key => "name",
    :foreign_key => "authorization_name"
end

В моем файле миграции у меня есть:

add_column :authorizations, :users_count, :integer, :default => 0

User.reset_column_information
User.find_each do |user|

  # By using the following code I get a "undefined method `counter_cache_column'
  # for nil:NilClass" error
  User.reset_counters(user.id, :authorization)

  # I also tried the following code but it still doesn't work.
  #
  #   User.reset_counters(user.users_authorization_system_name, :authorization)
  #
  # I get a "Couldn't find User with id=default" error when migrating.
  #
end

Что не так?Можно ли добавить counter_cache функциональные возможности в мой класс?Если так, как я могу это сделать?

1 Ответ

0 голосов
/ 28 февраля 2012

Мне кажется, проблема в том, правильно ли вы сменили первичный ключ?

Используя Rails, как мне установить мой первичный ключ, чтобы он не был столбцом с целочисленной типом?

...