未定义的方法`每个' for true:添加布尔值时的TrueClass

时间:2014-07-11 12:44:58

标签: ruby ruby-on-rails-4 sqlite

在我的应用程序的控制台中,我得到了未定义的方法`每个'为真:TrueClass"尝试将布尔值设置为true或false时。

例如,如果我

Man.create(guy: true) # or 
Man.create(:guy => true) # etc

我已经好几个月没有使用过这个应用程序了,我相信在我停止工作之前一切正常。我是Ruby的新手,并且编程知识有限,所以非常感谢任何帮助。创建行并仅提供字符串或整数值可以正常工作。如果这很重要,我正在使用SQLite3数据库。

guy是一个布尔

class AddMan < ActiveRecord::Migration
  def change
    create_table :men do |t|
      t.boolean :guy
      t.boolean :girl
      t.boolean :dude
      t.boolean :lady
      t.boolean :albert

      t.timestamps
    end
  end
end

class Man < ActiveRecord::Base
    has_many :guys
    has_many :girls
end

2 个答案:

答案 0 :(得分:1)

此:

has_many :guys
has_many :girls

通过Rails约定假设存在整数列:guy_idgirl_id,它们应分别是guysgirls表中的外键。这些不在您的架构中,因此我认为这是您所看到的错误的根本原因。

通常,请尝试避免可能与其他模型冲突的列名称(我假设您有名为GuyGirl的模型。尝试将布尔列重命名为is_guyis_girl

答案 1 :(得分:0)

从您的Man模型中,我假设您有guysgirls个不同的表格。从您的控制台看,您似乎想要为Man表的guy属性赋值。 如果是这种情况,那么您可以为Man表的guy属性分配值,例如

man = Man.new
man.guy = true