我有一个User模型,带有属性email,name ...
我想添加一个列has_agreed,默认值为true。所以我添加了迁移并运行它,它在数据库中正确显示。现在,当我获取值@user.has_agreed
时,它不会返回任何值。我在可访问的属性(Rails 3.2)中编写了has_agreed。
如果我通过此特定用户的更新命令手动更改数据库的内容,以便将id为1的用户的has_agreed值更改为false,然后运行相同的调用@user.has_agreed
,则返回false。
我有历史数据,我想添加此默认列,但不能也不打算通过数据库手动更新此列。如何获得价值?
此外,问题是只有用户表中的旧用户。对于新用户,它工作正常。
答案 0 :(得分:0)
在user.rb
中 class User
def has_agreed
# use this line code. if has_agreed not equal false
# read_attribute(:has_agreed) || default_velue
if read_attribute(:has_agreed).blank?
## default value
true
else
read_attribute(:has_agreed)
end
end
end