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!