如何在 ruby on rails 中使每个 user_id 的列数据唯一
Posted
技术标签:
【中文标题】如何在 ruby on rails 中使每个 user_id 的列数据唯一【英文标题】:How to make column data unique for each user_id in ruby on rails 【发布时间】:2013-05-03 03:58:32 【问题描述】:问题是我有一个表customers,其中包含一些与客户相关的列,例如customersID。
我还有一列user_id
,这样客户数据只与一个用户有关。
class Customers
belongs_to :user
end
class Users
has_many :customers
end
现在我在 customersID 上有了 :unique。但这使得每个 customerID 在整个表格中都是唯一的。 我想要的是每个 user_id 的 customerID 是唯一的。
有什么想法或建议吗?
编辑:问题似乎有点不清楚。
我有一个表用户
user1
user2
user3
我还有一个表customers,每个客户从创建他的用户那里获得一个user_id。用户可以输入一个customerID,每个用户都应该是唯一的。
customerID=1 user_id1
customerID=2 user_id1
customerID=1 user_id3
customerID=3 user_id1
customerID=1 user_id2
...
我在 CustomersController 中通过 @customers = current_user.customers
收集客户数据。 customerID 是一个简单的t.integer "customerID"
【问题讨论】:
Errr...我不确定是否了解全部情况,但是...您为什么不直接使用belongs_to :customer
和has_many :users
呢?
【参考方案1】:
为什么不通过客户表上的索引强制对 Customer_id, iser_id 的唯一性?您可以创建类似的迁移
add_index_to_costumers.rb
class AddIndexToCustomers < ActiveRecord::Migration
def change
add_index :customers, [:customerID,:user_id], unique: true
end
end
它应该在数据库级别确保 customerID/user_id 对是唯一的。如果我很好理解你的问题,那就是你所期望的。
希望对你有帮助
干杯
【讨论】:
所以每个customerID
都是唯一的。我想要的是对于每个用户,customerID
从 1 计数到 infi 并且是唯一的。希望说清楚了【参考方案2】:
您似乎希望客户拥有一个用户,对吗?试试这样的:
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
【讨论】:
以上是关于如何在 ruby on rails 中使每个 user_id 的列数据唯一的主要内容,如果未能解决你的问题,请参考以下文章