Две таблицы, служащие одной моделью в Rails - PullRequest
2 голосов
/ 18 июня 2010

Можно ли в рельсах настроить на модель, которая зависит от объединения из двух таблиц? Это будет означать, что для записи / обновления / уничтожения записи модели должны быть обе записи в обеих таблицах базы данных, связанные друг с другом в объединении. Модель будет просто обернута вместе во все столбцы обеих таблиц, которые затем можно будет использовать для форм и так далее. Таким образом, когда модель создается / обновляется, к модели применяется только один хеш переменной формы?

Возможно ли это в Rails 2 или 3?

Ответы [ 3 ]

0 голосов
/ 18 июня 2010

Многотабличное наследование не имеет готового решения в Ruby on Rails на данный момент. Хотя я бы предложил попробовать сделать что-то похожее на вышеупомянутые модели с отношениями, а затем в основном злоупотреблять делегатами или ручными прокси-серверами, чтобы имитировать атрибуты отношений, чтобы они отображались как реальные атрибуты модели.

0 голосов
/ 19 июня 2010

В MySQL вы можете попытаться работать с представлениями, чтобы объединить две таблицы. Но я не уверен, что произойдет, если записи должны быть обновлены, и как Rails справится с этим.

http://dev.mysql.com/doc/refman/5.1/en/create-view.html

0 голосов
/ 18 июня 2010

Насколько я знаю, невозможно сделать именно то, что вы просите в Rails, но вы можете эффективно выполнить то, что вы пытаетесь достичь, с помощью второй модели, используя обратные вызовы и ассоциацию has_one, для пример:

class Widget < ActiveRecord::Base
  has_one :thingy
  before_save :save_thingy_object

  def save_thingy_object
    self.thingy = Thingy.new({ :attr1 => 'some', :attr2 => 'thing' })
  end
end

class Thingy < ActiveRecord::Base
  belongs_to :widget
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...