Как найти класс, с которым связан объект? - PullRequest
0 голосов
/ 18 марта 2011

У меня есть два класса ActiceRecord:

class A < ActiveRecord::Base
  has_one :b
end

class B < ActiveRecord::Base
  belongs_to :a
end

Как определить объект, с которым связан B, когда ассоциации между A и B инициализируются только, например, во время выполнения?

Я ищу что-то вроде этого:

b.association => A

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

Я не уверен, поможет ли это вам, но

B.reflections

... даст вам хэш ассоциаций на уровне класса.Вы можете отфильтровать их.

Например:

class Datastream < ActiveRecord::Base
  belongs_to :dashboard
end

Datastream.reflections
# outputs: {:dashboard=>#<ActiveRecord::Reflection::AssociationReflection:0x00000100e21ef8 @macro=:belongs_to, @name=:dashboard, @options={}, @active_record=Datastream(id: integer, dashboard_id: integer, position: integer, feed_id: string, stream_id: string, created_at: datetime, updated_at: datetime), @collection=false>}
1 голос
/ 18 марта 2011

Действительно грязный способ:

`cat app/models/b.rb | grep 'belongs_to'`.gsub("belongs_to ", "")

Просто избегайте использования динамических данных, чтобы избежать:

; rm -rf *

вставляется туда ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...