2013-03-16 2 views
0

Кто-нибудь успешно использовал драгоценный камень Rails acts_as_tenant для многоуровневости, где столбец идентификатора арендатора не указан xxx_id?Rails 3 - act_as_tenant с пользовательским идентификатором идентификатора столбца

моя модель что-то вроде

has_one :tenant, :foreign_key => "tenant_code" 
acts_as_tenant :tenant 

Тогда я получаю мой запрос select * from [table] where tenant_id = xxx игнорируя преодолено foreign_key спецификации.

Есть ли способ исправить это? или я делаю что-то еще, очевидно, неправильно?

Спасибо!

ответ

0

ActsAsTenant устанавливает свой собственный внешний ключ в самом драгоценном камне, как (псевдокод) # {tenant_klass} _id:

def self.fkey 
    "#{@@tenant_klass.to_s}_id" 
end 

https://github.com/ErwinM/acts_as_tenant/blob/master/lib/acts_as_tenant/model_extensions.rb#L12-L14

К сожалению, я не верю, что вы можете настроить свой собственный внешний ключ для чего-либо иного, кроме отношений модели activerecord (с вашим кодом вы все равно теоретически можете назвать model.tenant, но это вам не поможет).

1

Подобно тому, как обновление к этому вопросу для дальнейшего использования:

С гем версии 0.3.3 и далее теперь можно явно установить внешний ключ.

acts_as_tenant(:account, :foreign_key => 'accountID') 

Возможно, это помогает кому-то, кто находит этот вопрос.