В моем приложении rails есть модель Rates, которая состоит из множества разных таблиц/ссылок для каждого столбца. Единственная реальная переменная — это мой столбец Cost (я ввожу сумму в долларах) и столбцы created_at и updated_at по умолчанию.
В моем индексе ставок в настоящее время я показываю все существующие в настоящее время ставки, модели и схемы ниже:
Rates Table
create_table "rates", force: :cascade do |t|
t.integer "origin_id"
t.integer "destination_id"
t.integer "carrier_id"
t.integer "shipment_category_id"
t.decimal "cost", precision: 10, scale: 2
t.integer "unit_of_measure_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "seller_id"
t.index ["carrier_id"], name: "index_rates_on_carrier_id", using: :btree
t.index ["destination_id"], name: "index_rates_on_destination_id", using: :btree
t.index ["origin_id"], name: "index_rates_on_origin_id", using: :btree
t.index ["seller_id"], name: "index_rates_on_seller_id", using: :btree
t.index ["shipment_category_id"], name: "index_rates_on_shipment_category_id", using: :btree
t.index ["unit_of_measure_id"], name: "index_rates_on_unit_of_measure_id", using: :btree
Rates Model
belongs_to :origin, :class_name => 'Port'
belongs_to :destination, :class_name => 'Port'
belongs_to :seller, :class_name => 'Carrier'
belongs_to :carrier
belongs_to :shipment_category
belongs_to :unit_of_measure
Я собирался создать миграцию, используя это решение, которое я нашел ( https://stackoverflow.com/a/34425284/7631715 ).
Дело в том, что я не хочу, чтобы это помешало мне импортировать «дубликаты» данных позже. Поскольку ставки от разных продавцов (seller_id) со временем меняются, я хотел сохранить эти данные, чтобы позже я мог построить линейный график, чтобы увидеть изменение стоимости с течением времени.
По сути, мой конечный продукт, я хочу, чтобы моя страница (индекс) просто показывала ставки, которые не являются дубликатами, и если они дублируются, отображать только добавленные/созданные ставки (последние созданные, будут текущей действительной ставкой.)
Стоит ли мне вообще создавать эту миграцию, чтобы добавить уникальность/ограничение? Или я должен просто сделать это на уровне контроллера. Если контроллер, как мне это сделать?
Спасибо,
cost
. Если это так, то вы не можете иметь ограничение уникальности только для поляcost
ни на уровне базы данных, ни на уровне ActiveRecord. На индексной странице вы захотите отфильтровать и отсортировать поcreated_at
, выбрав только самую последнюю запись. Если вы хотите спросить о том, как сделать этот фильтр и сортировку, вам нужно задать новый вопрос. - person moveson   schedule 22.03.2017