forked from Trustie/forgeplus
49 lines
1.5 KiB
Ruby
49 lines
1.5 KiB
Ruby
# == Schema Information
|
|
#
|
|
# Table name: platform_communicates
|
|
#
|
|
# id :integer not null, primary key
|
|
# title :string(255)
|
|
# content :text(65535)
|
|
# tag_field :text(65535)
|
|
# fake_id :integer
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# order_index :integer default("0")
|
|
# watchers_count :integer default("0")
|
|
# location :integer default("0")
|
|
# enroll_field :string(255)
|
|
# status :boolean default("0")
|
|
#
|
|
|
|
class PlatformCommunicate < ApplicationRecord
|
|
enum location: { pc: 0, applet: 1 }
|
|
before_save :add_fake_id, on: [:create, :update]
|
|
|
|
has_many :watchers, as: :watchable, dependent: :destroy
|
|
has_one :vote, dependent: :destroy
|
|
has_many :vote_options, through: :vote
|
|
|
|
def watched_ext_info(user_id)
|
|
watcher = self.watchers.find_by(user_id: user_id)
|
|
return [] if watcher.blank? or watcher.ext_info.blank?
|
|
str = []
|
|
self.enroll_field.to_s.split(",").each_with_index do |m, index|
|
|
str.push("#{watcher.ext_info["ext#{index + 1}"]}")
|
|
end
|
|
str
|
|
end
|
|
|
|
def add_fake_id
|
|
att_ids = []
|
|
if self.url_or_uuid.to_s.include?("http") && self.url_or_uuid.to_s.include?("forumsDetail")
|
|
att_ids += self.url_or_uuid.to_s.scan(/forumsDetail\/\d+/).map { |s| s.match(/\d+/)[0] }
|
|
if att_ids.present?
|
|
self.fake_id = att_ids[0]
|
|
end
|
|
else
|
|
self.fake_id = self.url_or_uuid
|
|
end
|
|
end
|
|
end
|