Open inou13139013 opened 9 years ago
アクセスしているユーザは「User.current」で参照でき、 チケットの担当者はチケット(Issue)オブジェクトの「assigned_to」から参照できます。 ので、アクセスユーザを見ている箇所を担当者に置き換えていけばいいと思います。
already_read?なら
# 既読ならtrueを返す def already_read?(user = self.assigned_to) return user && user.already_read_issue_ids.include?(self.id) end
といった感じでしょうか。
issues_controller_patch.rbあたりは
def issue_read if @issue && User.current == @issue.assigned_to && !@issue.already_read? User.current.already_read_issues << @issue end end
でしょうか。
実際に動かしてはないので、これで出来るかは不明ですが。
迅速な御回答ありがとうございます。 おかげで意図した動作をさせるようにできました。
担当者が空だとエラーになるため、 以下のようにコードを変更してみました。 (まだ、担当者にグループを設定すると落ちてしまうため改良中。。。)
issue_patch.rb
# 状態を文字で返す
def already_read(user = self.assigned_to)
if user
return (already_read?(user))? l(:label_already_read_read) : l(:label_already_read_unread)
else
return (already_read?(User.current))? l(:label_already_read_read) : l(:label_already_read_unread)
end
end
# 既読ならtrueを返す
def already_read?(user = User.current)
return user && user.already_read_issue_ids.include?(self.id)
end
# チケットを読んだ日
def already_read_date(user = self.assigned_to)
read = already_reads.detect{|r| r.user_id == user.id}
return (read)? read.created_on : nil
end
issues_controller_patch.rb
展開頂いた通り修正
井上と申します。
本プラグインを導入するに当たり 未読から既読にする条件を、 「チケットの担当者が見たら既読にする」 ようにしようと思い、 issue_patch.rb の already_read? をいじってみましたがうまくいきませんでした。 (自分ではなくチケット担当者のalready_read_issue_idsにアクセスしたいのですが、 ruby初心者のため途方に暮れてしまいました)
何かアドバイス頂けないでしょうか?