Присоединение ассоциации «один ко многим» с ассоциацией «многие ко многим» в Rails 3 - PullRequest
0 голосов
/ 17 июня 2010

У меня есть связь «многие ко многим» между классом User и классом Table.Кроме того, у меня есть связь «один ко многим» между пользователем и таблицей (один пользователь в конечном итоге владеет таблицей).Я пытаюсь получить доступ ко всем таблицам, к которым пользователь может получить доступ (по сути, объединяя обе ассоциации).

Кроме того, было бы хорошо сделать это с named_scope (теперь область действия)

что у меня так далеко:

class User < ActiveRecord::Base
  acts_as_authentic

  attr_accessible :email, :password, :password_confirmation
  has_many :feedbacks
  has_many :tables

  has_many :user_table_permissions
  has_many :editableTables, :class_name => "Table", :through => :user_table_permissions

  def allTables
    editableTables.merge(tables)
  end

end

1 Ответ

0 голосов
/ 04 ноября 2010

Недавно я писал об очень похожей проблеме. (http://stackoverflow.com/questions/4085972/ruby-on-rails-combine-results-from-multiple-has-many-or-has-many-through-associa) У двух моих ассоциаций есть дополнительный гандикап, который является полиморфным, но по сути мы оба хотим объединить два результата ассоциации, используя один искатель, и иметь набор результатов, доступный для дальнейшей обработки с использованием искателей, именованных областей или других функций AR.

В настоящее время это кажется невозможным без потери именно этой функциональности ActiveRecord (либо с использованием 'def', как вы выше, либо с использованием: finder_sql и: counter_sql в настройке ассоциации). Если вы придумали способ сделать это, я был бы очень признателен, если бы вы мне сказали.

Спасибо!

Jens

...