2012-06-28 6 views
0

Я пытаюсь иметь модель/таблицу с дублирующейся информацией. Причиной этого является то, что одни и те же данные могут быть записаны в таблицу под разными пользователями и найдены для каждого пользователя. Тем не менее, я хочу быстрый простой способ определить, какая информация является дубликатом другой информации. Я думаю, что лучший способ сделать это - иметь тип item_id, который увеличивается с каждым «набором» записей в таблицу. Есть ли способ сделать это, не включая другую таблицу, которая хранит информацию, не приписывая ее пользователям?Non-auto-increment rails/postgresql column

ответ

0

На самом деле то, что я искал была последовательность PostgreSQL. Вот код, который я закончил с использованием в моей миграции

def up 
    ActiveRecord::Base.connection.execute("create sequence action_id_seq;") 
end 

def down 
    ActiveRecord::Base.connection.execute("drop sequence action_id_seq;") 
end 

И тогда, когда запрос я использую

Action.find_by_sql("SELECT NEXTVAL('action_id_seq') AS action_id").first.event_id 

Для моих целей это работает довольно хорошо, и я могу использовать его, чтобы иметь уникальный идентификатор, для которого я контролируйте приращение.

0

Это, как я установил бы свои ассоциации до:

class User < ActiveRecord::Base 
has_many :records 
end 


class Record < ActiveRecord::Base 
belongs_to :user :foreign_key => user_id 
end 

Тогда вам придется установить user_id атрибут идентификатор CURRENT_USER перед сохранением записи.

Вы можете получить строки с помощью:

User.first.records 
Record.first.user 
+0

Это не совсем то, что я ищу. «Наборы» не определяются пользователем, а определяются действием, которое создает данные. Так, например, пользователь, создавший запись в блоге, будет генерировать две записи, каждая из которых содержит одни и те же данные, но те, чей владелец_ид был пользователем и тот, чей владелец_ид был продуктом. Я хочу присвоить этим двум записям уникальный идентификатор – jrbalsano

+0

, пожалуйста, включите вашу существующую модель и создайте действие, чтобы мы могли лучше понять. – holaSenor