- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有以下代码:
module DataMapper
module Resource
@@page_size = 25
attr_accessor :current_page
attr_accessor :next_page
attr_accessor :prev_page
def first_page?
@prev_page
end
def last_page?
@next_page
end
def self.paginate(page)
if(page && page.to_i > 0)
@current_page = page.to_i - 1
else
@current_page = 0
end
entites = self.all(:offset => @current_page * @@page_size, :limit => @@page_size + 1)
if @current_page > 0
@prev_page = @current_page
end
if entites.size == @@page_size + 1
entites.pop
@next_page = (@current_page || 1) + 2
end
entites
end
end
结束
然后我调用#paginate:
@photos = Photo.paginate(params[:page])
出现以下错误:
application error
NoMethodError at /dashboard/photos/
undefined method `paginate' for Photo:Class
在 Active record 中,这个概念对我来说很好用……我正在使用 JRuby 来通知。我做错了什么?
最佳答案
安德鲁,
您可以将 DataMapper::Resource 视为实例(一行),将 DataMapper::Model 视为类(一张表)。现在要更改资源或模型级别的默认功能,您可以将包含或扩展附加到模型。
首先,您需要将#paginate 方法包装在一个模块中。我还添加了一个可能无用的#page 方法来展示如何追加到资源以备不时之需。
module Pagination
module ClassMethods
def paginate(page)
# ...
end
end
module InstanceMethods
def page
# ...
end
end
end
在您的情况下,您希望#paginate 在模型上可用,因此您可以:
DataMapper::Model.append_extensions(Pagination::ClassMethods)
如果您发现自己需要为每个资源添加默认功能,请执行以下操作:
DataMapper::Model.append_inclusions(Pagination::InstanceMethods)
希望对您有所帮助!
关于ruby - 如何使用自定义方法扩展 DataMapper::Resource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3470260/
我正在阅读 Zend Framework 快速入门教程,在他们的演示代码中,他们使用了一个数据映射器,该映射器使用 Zend_DB_Table 来访问数据库(参见:http://framework.z
到目前为止,我一直在所有c#数据库驱动的应用程序中使用Active记录。但是现在我的应用程序需要将我的持久性代码与业务对象分开。我已经阅读了很多有关Martin Fowler的数据映射模式的文章,但是
我读过很多有关 DataMapper 模式的内容。 据我所知,DataMapper 应该将表单模型对象映射到实体对象。因此被用作某种适配器。 我理解正确吗? 最佳答案 不,Data Mapper是关于
我正在尝试使用新的 DataMapper 模型映射遗留 MySQL 数据库。 MySQL 模式: CREATE TABLE IF NOT EXISTS `backer` ( `backer_id`
我有一个带有几个字段和唯一约束的数据映射器对象。实际上,这确保了每个用户 ID 每个日期代码只能创建一条记录。 class Form include Datamapper::Resource
问题是我无法将列类型更改为“文本” 这是我看到的错误: DarkBook:playground Justin$ rake migrate_up (in/Users/Justin/Dropbox/Bus
我只是希望以随机顺序返回 DataMapper 记录。 这是我的模型(使用 DataMapper 和 sqlite3 数据库): class Movie include DataMapper::R
我在以下代码中遇到关联问题。 我遇到的错误是对最后一行代码的评论。 编辑:我简化了代码... require 'rubygems' require 'data_mapper' # requires a
我正在使用 Ruby/Sinatra 和 Datamapper 编写网络应用程序。我有一些表,我想将数据预加载到其中。有没有最佳实践?例如。我有一个名为 references 的表 id name u
我正在使用带有 DataMapper MySql 数据库的简单 Sinatra 网络应用程序。我声明了一个具有属性的 Datamapper Post 类 property :created_at, D
我有以下模型 class TagType include DataMapper::Resource ## Relationships belongs_to :category has
我正在使用 Ruby 中的 Sinatra 和 Datamapper 编写一个简单的应用程序,但我遇到了一个问题 — 当我尝试将数据保存到我的 SQLite 数据库时,没有任何变化。但是当我尝试安装数
我有一张产品表,其中包含 SKU、名称等属性。 似乎我需要为每个类别的产品创建单独的表格,因为类别的功能种类繁多。 假设我有一张放 Boot 、工具和帽子的 table /类 我想(除非有更好的方法)
我正在用 PHP 编写一个必须写入三个持久层的系统: 一个网络服务 两个数据库(一个mysql一个mssql) 这是遗留系统的原因,无法更改。 我想使用 DataMapper 模式,并且我正在尝试建立
我有一个这样的数据库模式 DataMapper.setup :default, "sqlite://#{Dir.pwd}/image.db" class Image include DataM
我有两个看起来像这样的模型 class Stage include DataMapper::Resource property :id, Serial belongs_to :
使用以下模型,我正在寻找一种高效且直接的方法来返回所有具有 0 个父任务(本质上是顶级任务)的任务。我最终也想返回 0 个子任务之类的东西,所以一个通用的解决方案会很好。这是否可以使用现有的 Data
我目前正在开发一个基于现有数据库的新应用程序,使用 DataMapper 进行数据访问。但是,它在处理外键时的约定不是数据库使用的约定。 例子: class Invoice include Dat
谁能给我解释一下这是怎么回事吗? 这是我放在一起向大家展示的示例: class Person include DataMapper::Resource property :id, Serial
class Alpha include DataMapper::Resource property :id, Serial property :name, String has n
我是一名优秀的程序员,十分优秀!