Простое присвоение значений с помощью attr_accessor или attr_writer не сработает - PullRequest
0 голосов
/ 27 января 2012

По какой-то причине объект @store с тремя атрибутами не будет назначать третье значение (сгенерированная строка токена). Модель имеет user_id , product_id и token_string .Но когда дело доходит до функции токена_генерации ничего не назначено, и заканчивается nil в столбце token_string в базе данных. Product_id и user_id отлично сохраняются в базе данных. Что здесь происходит? Заранее спасибо.

class Store < ActiveRecord::Base
  require 'digest/sha1'

  attr_accessor :token_string

  before_save :token_generate

  def save_with_payment 
     #Until here the object has user_id and product_id attribute values
     save!
  end

  private

  def token_generate
    self.token_string = Digest::SHA1.hexdigest("random string")
  end
end

контроллер

def create
  @store=Store.new(params[:store])

  if @store.save_with_payment
    redirect_to :controller=>"products",:action=>"index"
  else
    redirect_to :action=>"new"
  end
end

1 Ответ

2 голосов
/ 27 января 2012

@ SrdjanPejic правильно, попробуйте удалить строку attr_accessor :token_string, которая, вероятно, блокирует установку значения хеша: attribute, необходимого для оператора INSERT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...