gpt4 book ai didi

ruby - 在 Padrino/Datamapper 应用程序中读取 boolean 值时出现问题

转载 作者:数据小太阳 更新时间:2023-10-29 08:09:04 24 4
gpt4 key购买 nike

我正在开发一个使用 Datamapper 作为 ORM 的 Padrino 项目。我有一个看起来像这样的用户类:

class User
include DataMapper::Resource

property :id, Serial
property :username, String,
property :password, String
property :confirmed, Boolean
...<snip>...
end

现在,在我的 users Controller 中,我有这段代码:

user = User.get(current_user)
var1 = user.username
var2 = user.confirmed

现在,var1 已完全填充模型的 username 属性的内容。但是,下一行抛出以下错误:

NoMethodError at /users/blah
undefined method 'confirmed' for User:Class

看起来 ruby​​ 正在尝试将 .confirmed 视为方法而不是属性?它似乎发生在 Boolean 属性上,而不是 StringInteger 属性上。

有什么我遗漏的吗?

最佳答案

DataMapper 属性只是 DM 为您创建的 Ruby 方法(它们是在调用 property 方法时使用 Ruby 的元编程功能创建的)。你可以试试

 p user.methods.sort - Object.methods 

获取您创建的 User 对象的属性列表。

DM 将选择为 :confirmed 属性制作方法 user.confirmed? - 它遵循使用 命名 boolean 方法的松散 Ruby 约定? 最后。我已经通过在此处探索 DataMapper 代码进行了检查:https://github.com/datamapper/dm-core/blob/master/lib/dm-core/property.rb

关于ruby - 在 Padrino/Datamapper 应用程序中读取 boolean 值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20299610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com