2013-05-08 5 views
0

Проблема в том, что у меня есть клиенты таблицы с некоторыми столбцами, связанными с клиентами, такими как customersID. Также у меня есть столбец user_id Так что данные клиентов относятся только к одному пользователю.Как сделать данные столбца уникальными для каждого user_id в ruby ​​on rails

class Customers 
belongs_to :user 
end 

class Users 
has_many :customers 
end 

Теперь у меня есть: уникальный на customersID. Но это делает каждый идентификатор клиента уникальным по всему столу. Я хочу, чтобы идентификатор пользователя был уникальным для user_id.

Любая идея или предложения?

Редактировать: Вопрос кажется немного неясным.

У меня есть таблица пользователей

user1 
user2 
user3 

также у меня есть таблица клиентов, где каждый клиент получает в user_id от пользователя, который его создал. Пользователь может вводить идентификатор клиента, который должен быть уникальным для каждого пользователя.

customerID=1 user_id1 
customerID=2 user_id1 
customerID=1 user_id3 
customerID=3 user_id1 
customerID=1 user_id2 
... 

Я Crud данные клиентов через @customers = current_user.customers в моем CustomersController. CustomerID является простым t.integer "customerID"

+0

Errr ... Я не уверен, если есть вся картина, но ... Почему вы не просто использовать 'belongs_to: customer' и' HAS_MANY: пользователь «Тогда? – scaryguy

ответ

0

Кажется, что вы хотите, чтобы у Клиента был Пользователь, это правильно? Попробуйте что-то вроде этого:

class Customer 
    has_one :user 
end 

class User 
    belongs_to :customer 
end 

Таким образом, вы можете связать клиента с одним конкретным user_id. Тогда вы могли бы сделать что-то вроде этого:

@customer = Customer.where(name: "company name").first 
@user = @customer.user #this will find the customer's unique user 
+0

См. Мое редактирование, надеюсь, я сделал его более ясным. –

0

Почему бы не заставить уникальность пары customer_id, iser_id с помощью индекса на вашей таблице Customers? Вы можете создать что-то вроде миграции

add_index_to_costumers.rb

class AddIndexToCustomers < ActiveRecord::Migration 
    def change 
    add_index :customers, [:customerID,:user_id], unique: true 
    end 
end 

Она должна обеспечить на уровне базы данных, что пара CUSTOMERID/user_id является уникальным. Если я хорошо понимаю ваш вопрос, это то, что вы ожидаете.

Надеется, что это помогает

Приветствию

+0

Таким образом, каждый 'customerID' был бы uniq. Я хочу, чтобы для каждого пользователя значение 'customerID' составляло от 1 до infi и уникально. Надежда ясно дала понять –

Смежные вопросы