Class: Libertree::Model::Group

Inherits:
Object
  • Object
show all
Defined in:
lib/libertree/model/group.rb

Instance Method Summary collapse

Instance Method Details

#add_member(member) ⇒ Object



10
11
12
# File 'lib/libertree/model/group.rb', line 10

def add_member(member)
  Libertree::Model::GroupMember.create(group_id: self.id, member_id: member.id)
end

#after_createObject



4
5
6
7
8
# File 'lib/libertree/model/group.rb', line 4

def after_create
  super
  # Add creator of the group to the group
  Libertree::Model::GroupMember.create(group_id: self.id, member_id: self.admin_member_id)
end

#group_member(member) ⇒ Object



42
43
44
# File 'lib/libertree/model/group.rb', line 42

def group_member(member)
  Libertree::Model::GroupMember.where(group_id: self.id, member_id: member.id)
end

#member?(member) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/libertree/model/group.rb', line 18

def member?(member)
  self.group_member(member).any?
end

#membersObject



22
23
24
# File 'lib/libertree/model/group.rb', line 22

def members
  Libertree::Model::GroupMember.where(group_id: self.id).map { |gm| gm.member }
end

#posts(opts = {}) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/libertree/model/group.rb', line 26

def posts( opts = {} )
  time = Time.at(
    opts.fetch(:time, Time.now.to_f)
  ).strftime("%Y-%m-%d %H:%M:%S.%6N%z")

  Post.s(
    "SELECT * FROM posts_in_group(?,?,?,?,?,?)",
    self.id,
    opts.fetch(:viewer_account_id),
    time,
    opts[:newer],
    opts[:order_by] == :comment,
    opts.fetch(:limit, 30)
  )
end

#remove_member(member) ⇒ Object



14
15
16
# File 'lib/libertree/model/group.rb', line 14

def remove_member(member)
  self.group_member(member).delete
end