Method: Sequel::Model::ClassMethods#set_dataset
- Defined in:
- lib/sequel/model/base.rb
#set_dataset(ds, opts = {}) ⇒ Object Also known as: dataset=
Sets the dataset associated with the Model class. ds can be a Symbol (specifying a table name in the current database), or a Dataset. If a dataset is used, the model’s database is changed to the given dataset. If a symbol is used, a dataset is created from the current database with the table name given. Other arguments raise an Error. Returns self.
This changes the row_proc of the given dataset to return model objects, extends the dataset with the dataset_method_modules, and defines methods on the dataset using the dataset_methods. It also attempts to determine the database schema for the model, based on the given dataset.
271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 |
# File 'lib/sequel/model/base.rb', line 271 def set_dataset(ds, opts={}) inherited = opts[:inherited] @dataset = case ds when Symbol @simple_table = db.literal(ds) db[ds] when Dataset @simple_table = nil @db = ds.db ds else raise(Error, "Model.set_dataset takes a Symbol or a Sequel::Dataset") end @dataset.row_proc = Proc.new{|r| load(r)} if inherited @simple_table = superclass.simple_table @columns = @dataset.columns rescue nil else @dataset_method_modules.each{|m| @dataset.extend(m)} if @dataset_method_modules @dataset_methods.each{|meth, block| @dataset.(meth, &block)} if @dataset_methods end @dataset.model = self if @dataset.respond_to?(:model=) begin @db_schema = (inherited ? superclass.db_schema : get_db_schema) rescue Sequel::DatabaseConnectionError raise rescue nil end self end |