你为什么需要它?
我认为最好是创建一个表格页面,并在表格中添加一个外键到表格广告系列。
一个例子(我用的续集):
require 'sequel'
DB = Sequel.sqlite
DB.create_table :Campaigns do
primary_key :id
column :campaign_id, :integer
column :date, :date
column :name, :string
end
DB.create_table :Pages do
primary_key :id
foreign_key :campaign_id, :Campaigns
column :text, :string
end
key = DB[:Campaigns].insert(:campaign_id => 01, :date=> Date.new(2012,1,1), :name => 'FirstCampaign')
DB[:Pages].insert(:campaign_id => key, :text => 'text for FirstCampaign')
key = DB[:Campaigns].insert(:campaign_id => 02, :date=> Date.new(2012,1,1), :name => 'SecondCampaign')
DB[:Pages].insert(:campaign_id => key, :text => 'text for SecndCampaign')
#All pages for 1st campaign
p DB[:Pages].filter(
:campaign_id => DB[:Campaigns].filter(:campaign_id => 1).first[:id]
).all
但是,为了回答你的问题:你可以尝试使用model hook。
与续集的一个例子:
require 'sequel'
DB = Sequel.sqlite
DB.create_table :Campaigns do
primary_key :id
column :campaign_id, :integer
column :date, :date
column :name, :string
end
class Campaign < Sequel::Model
def after_create
tabname = ("%05i_page" % self.campaign_id).to_sym
puts "Create table #{tabname}"
self.db.create_table(tabname) do
foreign_key :campaign
end
end
end
p DB.table_exists?(:'01_page') #-> false, table does not exist
Campaign.create(:campaign_id => 01, :date=> Date.new(2012,1,1), :name => 'FirstCampaign')
p DB.table_exists?(:'00001_page') #-> true Table created
我的例子还没有测试,如果表中已经存在。如果你真的想使用它,
当然,只需将相应的CREATE TABLE发送到数据库。真正的问题是,你为什么要做这样的事情? –
将大量的广告系列添加到他们的网页后,拥有一个网页表格变得非常庞大。我正在尝试限制每个广告系列的页面大小。如果你知道更聪明的方式来做到这一点,请告诉我。我知道我的解决方案不聪明哈哈。 –
您似乎希望将单独的表格链接到广告系列表的每个记录?你考虑过MongoDB吗? – moritz