我使用了宝石https://github.com/dsaronin/milia。我的一个模型叫做Group:
class Group < ActiveRecord::Base
#.....
acts_as_tenant
end
但我无法出于某种原因创造它。这里是rails控制台:
t = Tenant.create(cname: 'cname1', company: 'comp1')
=> #<Tenant id: 3, tenant_id: nil, cname: "cname1", company: "comp1", created_at: "2015-03-03 03:39:38", updated_at: "2015-03-03 03:39:38">
[33] pry(#<Cucumber::Rails::World>)> t.valid?
=> true
[34] pry(#<Cucumber::Rails::World>)> t.new_record?
=> false
[35] pry(#<Cucumber::Rails::World>)> t.errors
=> #<ActiveModel::Errors:0x00000108a5e6d8
@base=
#<Tenant id: 3, tenant_id: nil, cname: "cname1", company: "comp1", created_at: "2015-03-03 03:39:38", updated_at: "2015-03-03 03:39:38">,
@messages={}>
但是当涉及到集团时,它总是无效的:
> g = Group.new(name: 'name1')
=> #<Group id: nil, name: "name1", room: nil, person_id: nil, created_at: nil, updated_at: nil, tenant_id: nil>
[37] pry(#<Cucumber::Rails::World>)> g.tenant
=> nil
[38] pry(#<Cucumber::Rails::World>)> g.tenant = t
=> #<Tenant id: 3, tenant_id: nil, cname: "cname1", company: "comp1", created_at: "2015-03-03 03:39:38", updated_at: "2015-03-03 03:39:38">
[39] pry(#<Cucumber::Rails::World>)> g.save!
ActiveRecord::RecordInvalid: Gültigkeitsprüfung ist fehlgeschlagen: Tenant muss ausgefüllt werden
from /Users/alex/.rvm/gems/ruby-2.1.2/gems/activerecord-3.2.21/lib/active_record/validations.rb:56:in `save!'
[40] pry(#<Cucumber::Rails::World>)> g.errors
=> #<ActiveModel::Errors:0x00000108888ea8
@base=
#<Group id: nil, name: "name1", room: nil, person_id: nil, created_at: nil, updated_at: nil, tenant_id: nil>,
@messages={:tenant_id=>["muss ausgefüllt werden"]}>
[41] pry(#<Cucumber::Rails::World>)> g.valid?
=> false
[42] pry(#<Cucumber::Rails::World>)> g.new_record?
=> true
它有什么用?
答案 0 :(得分:0)
我看到的第一件事是您不应该尝试手动创建租户。新租户对应于新的管理员用户创建,并且在milia gem中有定义的代码和过程,您应该遵循这些代码和过程,即使在测试中也是如此。具体来说:租户通过连接表与特定用户(所有者或管理员)绑定。您必须使用文档中概述的milia方法创建新租户,以便正确创建所有内容,包括用户的设计要求。
其次,&#34; Group&#34;是模型的可怜名称,可能与Rails关键字冲突。您应该重命名模型,因为这可能最终成为错误的来源。你不应该使用Rails常用的名字。更具体,例如,&#34; MyappGroup&#34;对于模型。
因此,如果您尝试创建租户/组进行测试,则应使用灯具。同样,在milia测试目录中有样本可以做到这一点。