Rails 3 - 使用自定义租户ID列的acts_as_tenant

时间:2013-03-16 17:53:46

标签: ruby-on-rails multi-tenant acts-as-tenant

是否有人成功使用Rails acts_as_tenant gem进行多租户,其中租户ID列未命名为xxx_id

我的模型类似于

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

然后我的查询select * from [table] where tenant_id = xxx忽略了被覆盖的foreign_key规范。

有什么方法可以解决这个问题吗?或者我在做其他明显错误的事情?

谢谢!

2 个答案:

答案 0 :(得分:2)

正如此问题的更新以供将来参考:

从gem 0.3.3开始,现在可以显式设置外键。

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

也许这有助于找到这个问题的人。

答案 1 :(得分:0)

ActsAsTenant在gem中将它自己的外键设置为(伪代码)#{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;但是,这对你没有帮助。)