rails 4 HABTM关系和连接表上的额外字段

时间:2015-02-10 03:51:58

标签: ruby-on-rails join entity-relationship has-and-belongs-to-many

我拥有(伪代码):

model Document
    column :title
    HABTM  :users
model User 
    column :name
    HABTM  :documents

文档包含用户(是文档的批准者,是否批准),在此上下文中,连接表应该为每个用户批准额外的列。

jointable
    user_id, document_id, approved
    1      , 1          ,    true
    2      , 1          ,    false

我想要的基本上是:

contract.approvers => returns users but with possibility to =>
contract.approvers.first.approve(:true) => and it updates JOINtable approve column to TRUE.

对于这种情况的答案权是可选的,也会欣赏有关架构的建议(或者我应该使用其他类型的关系?)。

1 个答案:

答案 0 :(得分:1)

HABTM不久前已经被弃用了,我认为它只是一个现在有很多参考。

无论哪种方式

join table name = DocumentReview

Document 
  has_many :document_reviews
  has_many :users, through: :document_reviews

User
  has_many :document_reviews
  has_many :documents, through: :document_reviews

我不明白合同是如何适应这一点的,我想你是说文件是合同?

我会将approve方法放在一个单独的类

class DocumentSignOff

  def initialize(user, document)
    @document_review = DocumentReview.find_by(user: user,document: document)
  end 

  def approve!
    #maybe more logic and such
    @document_review.udpate(approved: true)
  end
end