Как отменить присвоение значения? - PullRequest
1 голос
/ 26 июля 2010

У меня есть таблица, подобная следующей

id |имя |адрес

и имя и адрес не могут быть обнулены (это достигается только с помощью установщиков атрибутов, а не по умолчанию)

Когда я создаю новую запись без каких-либозначения по умолчанию, что будет храниться в таблице?

Если значение равно нулю-> если я сохраню значение (скажем, name = "MyName", address = "The address").Могу ли я сбросить его обратно на ноль при необходимости?Я не могу присвоить здесь значение null, так как мой установщик не разрешит.

Короче - могу ли я отменить присвоение значения, хранящегося в поле записи, используя что-то вроде

my_object.name.delete

из моего контроллера?1019 *

Спасибо

Обновление-сеттер модели

def name=(value)
  if name.nil? raise "Can't be nil" 
end

1 Ответ

1 голос
/ 26 июля 2010

Можно. Но сначала мои предположения:

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

Тогда вы можете сделать:

class MyModel < ActiveRecord::Base
  validates_pressence_of :name, :if => :check_name

  attr_writer :check_name
  def check_name # make it defalt to true
    @check_name = @check_name.nil? ? true : @check_name
  end
end

Вы можете использовать это так:

my_object.name = "Josh"
my_object.save # ok
my_object.name = ""
my_object.save # not ok
my_object.check_name = false
my_object.save # ok
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...