Ruby on rails 3 关于boolians的Rails 3和SQLite通信
im使用Rails 3.2.8和SQLite 1.3.6 我在更改数据库中的boolian变量时遇到了麻烦 SQLite将“t”和“f”翻译为true和false 此函数不会更新Ruby on rails 3 关于boolians的Rails 3和SQLite通信,ruby-on-rails-3,sqlite,boolean,windows-7-x64,Ruby On Rails 3,Sqlite,Boolean,Windows 7 X64,im使用Rails 3.2.8和SQLite 1.3.6 我在更改数据库中的boolian变量时遇到了麻烦 SQLite将“t”和“f”翻译为true和false 此函数不会更新:approved属性(默认为false) 但是更改字符串,如@user.update\u属性(:email,'root@email.org“)将更新电子邮件 我需要某种sqlite适配器吗 我已经安装了activerecord-jdbcsqlite3-adapter,它把我的应用搞砸了,因为我太匆忙了,没有注意到它被弃
:approved
属性(默认为false)
但是更改字符串,如@user.update\u属性(:email,'root@email.org“)
将更新电子邮件
我需要某种sqlite适配器吗
我已经安装了activerecord-jdbcsqlite3-adapter
,它把我的应用搞砸了,因为我太匆忙了,没有注意到它被弃用了:p
我发现了这个线索:
但我不明白我需要做什么才能使Rails和SQLite正确通信,因为我是Rails的新手:)
另外,我认为值得一提的是,我在Windows7x64上运行这个
更新
显然,Rails确实知道如何与Sqlite通信,但是我不知道为什么我的代码不适用于boolians lol
我认为:
<% @users.each do |user| %>
<tr>
<td><%= user.id %></td>
<td><%= user.email %></td>
<td><%= user.approved? %></td>
<td>
<% if !user.approved? %>
<%= link_to 'Approve', active_user_path(user), :method => :put %>
<% end %> </td>
</tr>
<% end %>
我的路线呢
match "users/:id/activate" => "users#activate", :as => "active_user"
这适用于其他字符串,如用户名、地址等,但不适用于bool的如果@user上的
approved
列是布尔值,则只需传递true/false,然后让数据库适配器计算出来
@user.update_attribute(:approved, true)
如果@user上的
approved
列是一个布尔值,则只需传递true/false,然后让数据库适配器计算出来
@user.update_attribute(:approved, true)
我通过使用一个整数迁移到我的users表来解决这个问题,我不知道为什么
@user.update\u属性(:approved,true)
没有保存到数据库中,它一定与我的设置有关
我进行了迁移
add\u列:users,:is\u approved,:integer,:default=>0
,当我想激活一个用户时,我只需将整数值翻转为1我通过使用整数迁移到我的users表来解决这个问题,我不知道为什么@user.update\u属性(:approved,true)
未保存到数据库,它一定与我的设置有关
我进行了迁移
add_列:users,:is_approved,:integer,:default=>0
,当我想激活一个用户时,我只需将整数值翻转为1SQLite没有单独的布尔存储类。相反,布尔值存储为整数0(false)和1(true)。
在我发布此内容后不久发现了此问题,但是否有某种适配器允许我在sqlite中使用treu和false?sqlite没有单独的布尔存储类。相反,布尔值被存储为整数0(false)和1(true)。
在我发布这篇文章后不久就发现了这一点,但是否有某种适配器允许我在sqlite中使用treu和false?我不认为适配器与我的sqlite gem一起提供,我还必须手动从他们的网站获取sqlite exe&dll文件Rails附带了一个sqlite适配器,这就是它与数据库通信的方式。您是否尝试传递true
而不是t
?是的,我尝试使用@user.update\u属性(:approved,true)
调用更新,但它仍然无法将其保存到数据库中,但更新返回true,就好像它成功了,但仍然没有保存新值。肯定还有其他问题。它对我来说工作正常:我不认为适配器与我的sqlite gem一起提供,我还必须从他们的网站手动获取sqlite exe&dll文件Rails附带了一个sqlite适配器,这就是它与数据库的通信方式。您是否尝试传递true
而不是t
?是的,我尝试使用@user.update\u属性(:approved,true)
调用更新,但它仍然无法将其保存到数据库中,但更新返回true,就好像它成功了,但仍然没有保存新值。肯定还有其他问题。它对我来说工作正常:
@user.update_attribute(:approved, true)