首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在现有表上使用ActiveRecord模型时出现的问题

在现有表上使用ActiveRecord模型时出现的问题
EN

Stack Overflow用户
提问于 2010-07-17 07:37:49
回答 2查看 646关注 0票数 0

我已经使用以下生成器命令为现有表创建了一个模型:

代码语言:javascript
复制
script/generate model Group

有问题的表有一个不同的名称,所以我更改了模型来说明它。

代码语言:javascript
复制
set_table_name 'demandegroupe'

然后,我启动了控制台,查看是否一切正常。

代码语言:javascript
复制
>> Group.all
[#<Group login: "XXXXXX", ...>, ...]

但是,令我惊讶的是,在视图中使用此模型会抛出奇怪的错误。我回到控制台,以确保我没有产生幻觉,下面是发生的事情:

代码语言:javascript
复制
>> Group.first
#<Group login: "XXXXXX", ...>
>> Group.first.login
NoMethodError: undefined method `generated_methods' for 50:Fixnum
        from /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/attribute_methods.rb:247:in `method_missing'
        from (irb):2

在此之后,第一个表达式将不再起作用:

代码语言:javascript
复制
>> Group.first
NoMethodError: undefined method `column_names' for 50:Fixnum

所有列都是varcharint50:Fixnum类型从何而来?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-17 11:15:50

最后,我犯了一个巨大的错误,或者更准确地说,我忽略了一个重要的细节!这是一个简单的列名冲突,我已经检查了它们的潜在问题,但遗漏了掩埋在其他26个列中的一个。这个恶意的列被命名为class,一旦AR在访问任何列后生成了它的魔术代码,它就会替换掉重要的类方法,而不会抛出任何错误。

我预计几乎不会有名称冲突,因为列名似乎都是用法语写的,所以没有花足够的时间,而且肯定读过"classe“或类似的东西。当心强大的名字冲突!

感谢ehsanul和dmajkic让我再次查看这些列的名称。

票数 0
EN

Stack Overflow用户

发布于 2010-07-17 10:55:31

您使用的是Mysql吗?Group是保留的sql关键字。看起来Rails 2.3.5+可以为mysql处理这个问题,但它可能会导致您在其他数据库或其他版本的Rails上看到的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3269519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档