Undefined метод "каждый" для true: TrueClass при добавлении логических значений

В консоли моего приложения я получаю "неопределенный метод" каждый "для true: TrueClass при попытке установить логическое значение true или false.

Например, если я это сделаю

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

Я не работал над этим приложением в течение нескольких месяцев, и я считаю, что все отлично работает, прежде чем я прекратил работу над ним. Я новичок в Ruby и имею ограниченные знания в области программирования, поэтому любая помощь очень ценится. создание строк и предоставление только строковых или целых значений отлично. Я использую базу данных SQLite3, если это имеет значение.

парень - булевский

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 ответа

Эта:

has_many :guys
has_many :girls

предполагает, по соглашению Rails, наличие столбцов Integer :guy_id и girl_id, которые должны быть внешними ключами в таблицах guys и girls, соответственно. Они отсутствуют в вашей схеме, поэтому я предполагаю, что основной причиной ошибки вы видите.

В общем, попробуйте избежать имен столбцов, которые могут противоречить другим моделям (я предполагаю, что у вас есть модели с именем Guy and Girl. Попробуйте переименовать ваши булевские столбцы в нечто вроде is_guy и is_girl.


Из вашей модели Man я предполагаю, что у вас есть guys и girls разных таблиц. И с вашей консоли кажется, что вы хотите присвоить значение атрибуту Man table guy. Если это так, то вы можете присвоить значение для вашего Man таблицы guy атрибут как

man = Man.new
man.guy = true

licensed under cc by-sa 3.0 with attribution.