我拥有(伪代码):
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.
对于这种情况的答案权是可选的,也会欣赏有关架构的建议(或者我应该使用其他类型的关系?)。
答案 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
端