рельсы, драгоценный камень стран - не сохраняется в базу данных

Я не могу заставить выбранную страну сохраниться в базе данных. Я включил строковый столбец country_code в базу данных модели.

я разрываю частично здесь:

<%= f.label :country_code, "Country Traveled:" %>
<%= f.country_select :country_code, prompt: "Select a country" %>

В моем контроллере:

    def new
        @user = User.new
    end

def index
    @user = User.all
  end

def create
    @user = User.new(user_params)

    if @user.save
      redirect_to @user
    else
      render 'new'
    end
  end

  def show
    @user = User.find(params[:id])
  end

  def edit
    @user = User.find(params[:id])
  end

private
    def user_params
      params.require(:user).permit(:country_code, :summary, :title, :text, :start_date, :end_date)
    end

В моей модели.rb:

class User < ActiveRecord::Base

    has_many :comments, dependent: :destroy

    attr_accessor :country_code

    validates :country_code, presence: true

    validates :summary, presence: true,length: { minimum: 5, maximum: 100 }

    validates :title, presence: true,
                      length: { minimum: 3 }

    validates :text, presence: true,
                      length: { minimum: 5 } 

    validates :start_date, presence: true

    validate :end_date_is_after_start_date

private
  def end_date_is_after_start_date
    return if end_date.blank? || start_date.blank?

      if end_date < start_date
        errors.add(:end_date, "End Date cannot be before the Start Date") 
      end 
  end

end

Раскрывающийся список в представлении работает нормально, но когда я нажимаю «Отправить», он не сохраняется в базе данных. Я что-то упускаю? Заранее спасибо!


person gitastic    schedule 24.09.2014    source источник
comment
Можете ли вы использовать binding.pry и ввести параметры, чтобы убедиться, что значение :country_code   -  person Mohamed Yakout    schedule 24.09.2014


Ответы (1)


Поделитесь своим контроллером и моделью, пожалуйста.

Обычно вы можете удалить:

attr_accessor :country_code

Это бесполезно, потому что вы сохраняете код страны в своей базе данных, а attr_accessor предназначен только для виртуального атрибута, вы можете узнать больше об этом здесь: https://stackoverflow.com/a/20535041/3739191

PS: Ваша форма для регистрации создана с нуля или нет?

person Ayoros    schedule 24.09.2014
comment
Привет Spuyet - спасибо за ответ. Я обновил свой исходный вопрос, указав полный контроллер и модель. Очень надеюсь, что вы можете помочь. Спасибо за вашу помощь! - person gitastic; 25.09.2014
comment
Спасибо, мне нужно больше информации. Пользователь сохранен или нет? Если да, то country_code — единственное поле, которое не сохраняется? - person Ayoros; 25.09.2014
comment
Да - все остальные поля сохраняются (т.е. сводка, заголовок, дата и т.д.) - только код страны не сохраняется в базе данных по какой-то непонятной причине. знак равно - person gitastic; 25.09.2014
comment
Спасибо всем! Похоже, что строка attr_accessor сделала :country_code виртуальным, следовательно, не сохраняет в БД. Ваше здоровье! - person gitastic; 26.09.2014