Как добавить несуществующий столбец в запрос sql

У меня небольшая проблема. Я ищу способ «добавить» столбец в запрос sql.

На самом деле я сортирую какой-то продукт из таблицы в таком порядке:

@prod = Table.find(:all,{:select=>["id, prod-id, cost"],:conditions=>["something = ? and somethingelse = ?","that thing","that other thing"],:order=>"id DESC"})

Затем я помещаю результат этого запроса в таблицу (html) с формой для добавления продукта в корзину.

Проблема возникает сейчас. В моей корзине товар такой:

cart: #<Cart:0x00000005ce0a68 @items=[[#<Table id: 6024, prod-id: 907509, cost: 33>]]>

И мне нужно добавить «столбец» к данным в моей корзине. Чтобы моя корзина выглядела так:

cart: #<Cart:0x00000005ce0a68 @items=[[#<Table id: 6024, prod-id: 907509, cost: 33, quantity: 1>]]>

Вот моя корзина:

class Cart
      attr_reader :items

      def initialize
        @items = []
        @total_price = 0
      end

      def add_product(product)
        @items << product
        product
      end

      def total_price
        @items.sum{ |item| item.prod_pxuttc}
      end

      def total_items
        @items.length
      end
    end

Мне не нужно добавлять какие-либо столбцы в мою таблицу. Потому что мне придется импортировать данные из другой исходной базы данных в свою таблицу, и я не могу изменить исходную базу данных. (Да, это глупый процесс, но именно этого хочет мой клиент)

Я совершенно не знаю, как назвать процесс, который мне нужно сделать.


[править]

Я нашел способ решить свою проблему. Создав вторую таблицу с тем же столбцом плюс количество столбцов с пустой строкой по умолчанию. Затем я выбираю свой продукт из первой таблицы, строку по умолчанию из второй таблицы и помещаю значение из продукта в переменную строки по умолчанию. Затем я помещаю свою новую переменную в свою корзину.

Это немного сложно, но это работает.


person Zyth23    schedule 18.06.2012    source источник
comment
Я думаю, вам нужна таблица товаров и has_many :items в модели корзины... предположим, что ваша корзина является моделью; или это только в сессии?   -  person mdesantis    schedule 18.06.2012
comment
корзина хранится в сеансе, а не в таблице.   -  person Zyth23    schedule 18.06.2012
comment
Итак: в чем твоя проблема? Ваш класс корзины не работает? какие у тебя ошибки?   -  person mdesantis    schedule 18.06.2012
comment
Мне нужно, чтобы в моей корзине был столбец количества, но этого столбца нет в таблице, где я беру свой товар. И мне нужно получить столбец, не добавляя его в таблицу.   -  person Zyth23    schedule 18.06.2012


Ответы (1)


Возможно, определите корзину, поскольку следующее решит проблему.

class Product
  attr_accessor quantity
end

class Cart
  ...
end
person guanxiaohua2k6    schedule 18.06.2012
comment
Мне нужно добавить столбец "Количество" в корзину, не добавляя столбец в таблицу. Вот и все. (корзина не в таблице, это модель, хранящаяся в сеансе) - person Zyth23; 18.06.2012
comment
Но тип @item — Product. Я думаю, что Product — это модель стола. Не могли бы вы добавить столбец количества в продукт? - person guanxiaohua2k6; 18.06.2012
comment
Это немного сложно. Я должен оставить таблицу такой, какая она есть на данный момент, потому что мне придется импортировать данные в таблицу из другой базы данных. И в этой другой базе данных не будет нового столбца, и я не могу добавить этот новый столбец в исходную базу данных. Вот почему мне нужно сделать это без добавления какого-либо столбца в мою таблицу. - person Zyth23; 18.06.2012
comment
Я думал двумя способами. Может быть, это ответы. - person guanxiaohua2k6; 18.06.2012
comment
Я думаю, что ответ, когда я кладу свой продукт в корзину. Вот что я положил в корзину: product = Table.find(:first,{:select=>["id, prod-id, cost"],:conditions=>["id = ?","#{params[:prod_to_add]}"],:order=>"prod-id DESC"}). Затем я делаю @cart.add_product(product). Что делать @items << product Я не знаю, как присвоить :quantity =› 1 этому процессу. - person Zyth23; 18.06.2012
comment
Пожалуйста, попробуйте самый новый ответ. - person guanxiaohua2k6; 18.06.2012
comment
хм, я не хочу добавлять количество в корзину. но к продукту. Я выбираю id, prod-id, cost из своей таблицы. И мне нужно положить id, prod-id, cost, quantity в корзину. Чтобы иметь возможность изменять количество каждого товара в корзине. - person Zyth23; 18.06.2012
comment
Затем вы, возможно, добавите атрибут количества к продукту над корзиной, как и в самом новом ответе. - person guanxiaohua2k6; 18.06.2012
comment
Я нашел способ сделать то, что мне было нужно. Я создал вторую таблицу, в которой есть столбец количества, затем я выбираю одну строку из таблицы 1 и строку по умолчанию из таблицы 2, помещаю значение из строки таблицы 1 в переменную, содержащую строку из таблицы 2. - person Zyth23; 18.06.2012