例子...
我有一个班级client
,这是我的tenant
模特。
我有关联的记录与创建的每个新记录一起保存client
。让我们打电话给他们tasks
。
我在其中创建了一个after_initialize
回调,该回调client
调用了一个名为的方法,该方法build_defaults
执行以下操作...
def build_defaults
self.tasks.build(
Task.new({
:name => 'task 1',
:description => 'task 1 desc',
:view_module => 'task_1_template'
}),
Task.new({
:name => 'task 2',
:description => 'task 2 desc',
:view_module => 'task_2_template'
}),
Task.new({
:name => 'task 3',
:description => 'task 3 desc',
:view_module => 'task_3_template'
}),
Task.new({
:name => 'task 4',
:description => 'task 4 desc',
:view_module => 'task_4_template'
}),
Task.new({
:name => 'task 5',
:description => 'task 5 desc',
:view_module => 'task_5_template'
})
)
end
该task
课程设置为acts_as_tenant :client
当我去做@client = new Client( :name => "Test Client" )
它提出ActsAsTenant::Errors::NoTenantSet: ActsAsTenant::Errors::NoTenantSet
当它是一个新记录时,有没有办法有条件地绕过acts_as_tenant的检查?还是处理这类事情的更好方法?
几个月前我对rails / ruby还很陌生......?
更新
好吧,我想知道是否将其更改为“after_create”并ActsAsTenant.current_tenant = self
在我可以self.tasks.create!
调用的方法中设置...但不确定覆盖 ActsAsTenant.current_tenant 是否是个好主意?
after_create :build_defaults
def build_defaults
ActsAsTenant.current_tenant = self
self.tasks.create!({
:name => 'Facebook > Page Like',
:description => 'Request that they like your page.',
:view_module => 'facebook_page_like'
})
self.tasks.create!({
:name => 'Facebook > Share',
:description => 'Share a link on Facebook',
:view_module => 'facebook_share_link'
})
self.tasks.create!({
:name => 'Twitter > Tweet',
:description => 'Post a tweet on a user behalf.',
:view_module => 'twitter_tweet'
})
self.tasks.create!({
:name => 'Twitter > Follow',
:description => 'Follow the company twitter user.',
:view_module => 'twitter_follow'
})
self.tasks.create!({
:name => 'Giveaway Share',
:description => 'This allows you to earn 5 extra entries by re-sharing this giveaway.',
:view_module => 'giveaway_share'
})
end