Как я могу изменить_column_default на основе значения, выбранного в другой строке в Ruby on Rails миграции? - PullRequest
0 голосов
/ 01 августа 2020

Простите, вы все. Впервые в Ruby на Rails. Я обновляю форму профиля, которая состоит из следующих вопросов ДА / НЕТ: введите описание изображения здесь

В таблице пользователей уже есть столбец children_under_five, но я хотел бы добавить столбец has_children, чтобы указать, есть ли у них дочерние элементы. Единственным новым полем будет has_children, которое в случае, если у кого-то есть ребенок младше 5 лет, что означает, что у него есть ребенок, поэтому has_children должно быть истинным для этих людей, в противном случае оно должно быть по умолчанию false. Как я могу реализовать это в самой миграции? Это все, что у меня есть:

  def change
    add_column :users, :has_children, :boolean, default: false, null: false
  end
end

Ответы [ 3 ]

1 голос
/ 01 августа 2020

Добавьте оператор обновления либо в этой миграции, либо в следующей ...

 def change
   query = <<-SQL
     update users
     set has_children = children_under_five
   SQL

   execute query
 end
0 голосов
/ 01 августа 2020

Как насчет использования метода здесь?

class User < ApplicationRecord
  def has_children?
    self.children_under_five > 0 ? true : false
  end
end

И вы можете использовать его как

>> user = User.first
   user.has_children? # returns true or false
0 голосов
/ 01 августа 2020

Я совершенно не понимаю ваш вопрос, но вопрос в том? Как добавить столбец с миграцией? ну: rails g migration add_has_children_to_users has_children:boolean затем rails db:migrate

...