Ruby DataMapper, наследование таблиц

Мои таблицы всегда повторяют эту строку

    property :created_at, DateTime, :default => DateTime.now, :lazy => [:show]
property :updated_at, DateTime, :default => DateTime.now, :lazy => [:show]

Как я СУШУ это? Я наследую, или есть модуль, или что-то еще?

Это вот так:

Class Foo
include DataMapper::Resource

property :id, Int
property :created_at, DateTime, :default => DateTime.now, :lazy => [:show]
property :updated_at, DateTime, :default => DateTime.now, :lazy => [:show]
end

Class Bar
include DataMapper::Resource

property :id, Int
property :created_at, DateTime, :default => DateTime.now, :lazy => [:show]
property :updated_at, DateTime, :default => DateTime.now, :lazy => [:show]
end

они повторяются несколько раз через каждую таблицу

2 ответа

Решение

Ну, теперь я понимаю, что вы говорите. Это свойства рельсов, которые создаются автоматически. Я не уверен, есть ли способ предотвратить это, но это определенно полезно во многих ситуациях. Я предлагаю вам сохранить их, вы узнаете, как их использовать, когда узнаете больше о Rails.

Что касается представлений, вам нужно создать метод контроллера и определить маршрут к этим методам внутри config/routes.rb, Я предлагаю вам узнать больше о схеме рельсов MVC. MVC - это ядро, на котором построен Rails.

http://guides.rubyonrails.org/ - отличный сайт для изучения рельсов. Попробуйте прочитать всего несколько статей, и вы сможете понять достаточно, чтобы быстро создать полноценное приложение.

Я делаю что-то подобное. Я использовал наследование так:

require 'rubygems'
require 'dm-core'
require 'dm-migrations'
require 'dm-constraints'

DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/development.db")
DataMapper::Property::String.length(255)

class BaseTable
  include DataMapper::Resource
  property :id, Serial
  property :created_date, DateTime, :default => DateTime.now
  property :created_by, Integer
  property :updated_date, DateTime, :default => DateTime.now
  property :updated_by, Integer
end

class User < BaseTable
  property :userid, String
  property :email, String
  property :password, String
end

class Account < BaseTable
  property :name, String
  property :type, String
  property :location, String
  property :account_number, String
  property :total_balance, Integer
  property :cleared_balance, Integer
  property :marked_as_cleared_balance, Integer
  has n, :transactions, :constraint => :destroy
end

class Transaction < BaseTable
  property :id, Serial
  property :label, String
  property :cleared, Boolean
  property :date, Date
  property :description, String
  property :amount, Integer
  property :note, String
  property :balance, Integer
  belongs_to :account
end

DataMapper.finalize
DataMapper.auto_upgrade!
Другие вопросы по тегам