правильный путь для моделирования в Rails 3 / ActiveRecord - составной внешний ключ - PullRequest
2 голосов
/ 28 сентября 2011

У меня есть набор местоположений, которые имеют отношение к таблице global_identificiation, которая имеет id, arc_id (object_id) и arc_type (object_type) (т.е. составной внешний ключ).Как бы я настроил ассоциацию так, чтобы эта глобальная информация охотно загружалась в каждую находку Местоположения?такой что:

@l=Location.find(23)

@l['id']=23
@l['name']='some place'
@l['global_info']['id']=145
@l['global_info']['arc_id']=23
@l['global_info']['arc_type']='Location'

Прямо сейчас, для сохранения, я просто делаю обратный вызов after_save, который определяет, как он попадает в базу данных, но не имеет с ним никаких других ассоциаций.

спасибо за любую помощь

edit:
возможно, это можно сделать просто как after_find для классов, которые в этом нуждаются?

1 Ответ

0 голосов
/ 28 сентября 2011

Либо используйте after_find, либо просто создайте метод в своей модели для вызова, а затем просто передайте данные в качестве параметров.

Или, что еще лучше, создайте модуль, который могут включать все ваши классы на основе определения местоположения, тогда этот модуль может определять все виды методов на основе определения местоположения.

 module Locations
    def find_with_data(id)
        x = Location.find(id)
        x['id']=id
        x['name']='some place' #you could pass this in params
        x
    end
  end

 class Location < ActiveRecord::Base
    include Locations
 end

, затем позвоните

 new_loc = Location.new
 new_loc.find_with_data(35)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...