Rails抱怨属性不存在,但它适用于其他人

时间:2013-08-29 18:40:33

标签: ruby-on-rails ruby ruby-on-rails-3 postgresql activerecord

在此之前我应该​​注意,我的朋友从我的git repo中撤出了,这对他来说非常有效。

数据库具有属性,并设置了attr_accessible。但是当试图在视图中访问它时,Rails会抛出此错误undefined method 'is_free' for #<Account:0x007fb53bc91ec0>

参考数据库:t.boolean "is_free", :default => false

另一个非常奇怪的事情是你可以看到控制台中存在该属性。

1.9.3p194 :005 > a.is_free
 => false 

我已经删除,创建并重新迁移数据库但没有成功。我删除了整个文件夹,从git重新克隆并重新创建数据库但没有成功。

我不知道发生了什么......它只是表现得很乱。请帮忙,我正在失去理智。

2 个答案:

答案 0 :(得分:1)

更改

a.update_attribute(:is_free, :true)

a.update_attribute(:is_free, true)

答案 1 :(得分:1)

这样的方法仅在您请求它的方式获取该列时才存在。默认情况下,它的工作方式,但可以限制使用select加载哪些列。

找出所拥有数据的一种非常简单的方法是将其放在您的视图中:

raise a.attributes.inspect

a是有问题的记录。如果已加载,您应该看到is_free属性。如果没有,请查看log/development.log以查看执行了SELECT个查询。