2010-06-18 3 views
2

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

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

ответ

0

Невозможно выполнить то, о чем вы просите в 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 
0

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

0

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

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

Смежные вопросы