【发布时间】:2020-07-09 08:08:18
【问题描述】:
我在评论和用户之间有以下关联:
由于我使用的是 Devise,我只保留了一个用户表,并使用客户或卖方列(布尔值)来识别角色。
所以你可以想象,我需要知道进行评论的用户和被“评论”的用户。
第一个问题是:我可以在创建迁移时使用引用吗?我像这样手动创建了这些列:t.integer :client_id, foreign_key: true 和 t.integer :seller_id, foreign_key: true
第二个是:如何指定模型中的关系?我确实喜欢这个has_many :reviews, foreign_key: "client_id" 和has_many :reviews, foreign_key: "seller_id",但我不确定它是否正确。
这是迁移的完整代码:
class CreateReviews < ActiveRecord::Migration[6.0]
def change
create_table :reviews do |t|
t.text :description
t.integer :rating, null: false
t.integer :client_id, foreign_key: true
t.integer :seller_id, foreign_key: true
t.timestamps
end
end
end
用户模型:
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :reviews, foreign_key: "client_id"
has_many :reviews, foreign_key: "seller_id"
end
和审查模型:
class Review < ApplicationRecord
belongs_to :user
end
Rails 版本:6.0.3.2 - Ruby 版本:2.6.6
【问题讨论】:
标签: ruby-on-rails activerecord