如何进行私人活动?
How to make private activities?
我们如何为用户提供将活动设为私密的选项?这将为用户提供他们只希望自己看到的帖子的隐私。
这是我的一次尝试,它给了我:
NoMethodError in ActivitiesController#index
undefined method 'public_activities'
行:@activities = Activity.public_activities.order("created_at desc").where(current_user.following_ids)
class ActivitiesController < ApplicationController
def index #Added .public_activities
@activities = Activity.public_activities.order("created_at desc").where(user_id: current_user.following_ids)
end
end
class Activity < ActiveRecord::Base
belongs_to :user
has_many :comments, as: :commentable
belongs_to :trackable, polymorphic: true
def public?
!private
end
end
create_table "activities", force: true do |t|
t.boolean "private", default: false
t.integer "user_id"
t.string "action"
t.integer "trackable_id"
t.string "trackable_type"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
class User < ActiveRecord::Base
has_many :activities
def public_activities
activities.find(&:public?)
end
end
并且在其中一个 _forms 中,例如 @valuations
或 @goals
,用户可以通过提交来区分:
<%= button_tag(type: 'submit', class: "btn", id: "gold") do %>
<span class="glyphicon glyphicon-plus"></span> Public
<% end %>
<%= button_tag(type: 'submit', class: "btn") do %>
<% :private %><span class="glyphicon glyphicon-plus"></span> Private
<% end %>
此代码的大部分灵感来自此处的答案:
谢谢!
class User < ActiveRecord::Base
has_many :activities
def public_activities
activities.find(&:public?)
end
end
这定义了一个名为 public_activities 的新 instance 方法 - 您将只能在 user
的实例上使用它
class ActivitiesController < ApplicationController
def index #Added .public_activities
@activities = Activity.public_activities.order("created_at desc").where(current_user.following_ids)
end
end
在这里,您试图在 Activity class 上调用 class 方法。
如果您想执行上述操作,则需要在 Activity class.
上创建一个范围
在这种情况下,名字中的"activities"部分最好不要重复,直接叫"public"
例如
class Activity < ActiveRecord::Base
belongs_to :user
has_many :comments, as: :commentable
belongs_to :trackable, polymorphic: true
scope :public, ->{ where(:private => false) }
def public?
private == true ? false : true
end
end
class ActivitiesController < ApplicationController
def index
@activities = Activity.public.order("created_at desc").where(current_user.following_ids)
end
end
我们如何为用户提供将活动设为私密的选项?这将为用户提供他们只希望自己看到的帖子的隐私。
这是我的一次尝试,它给了我:
NoMethodError in ActivitiesController#index
undefined method 'public_activities'
行:@activities = Activity.public_activities.order("created_at desc").where(current_user.following_ids)
class ActivitiesController < ApplicationController
def index #Added .public_activities
@activities = Activity.public_activities.order("created_at desc").where(user_id: current_user.following_ids)
end
end
class Activity < ActiveRecord::Base
belongs_to :user
has_many :comments, as: :commentable
belongs_to :trackable, polymorphic: true
def public?
!private
end
end
create_table "activities", force: true do |t|
t.boolean "private", default: false
t.integer "user_id"
t.string "action"
t.integer "trackable_id"
t.string "trackable_type"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
class User < ActiveRecord::Base
has_many :activities
def public_activities
activities.find(&:public?)
end
end
并且在其中一个 _forms 中,例如 @valuations
或 @goals
,用户可以通过提交来区分:
<%= button_tag(type: 'submit', class: "btn", id: "gold") do %>
<span class="glyphicon glyphicon-plus"></span> Public
<% end %>
<%= button_tag(type: 'submit', class: "btn") do %>
<% :private %><span class="glyphicon glyphicon-plus"></span> Private
<% end %>
此代码的大部分灵感来自此处的答案:
谢谢!
class User < ActiveRecord::Base
has_many :activities
def public_activities
activities.find(&:public?)
end
end
这定义了一个名为 public_activities 的新 instance 方法 - 您将只能在 user
的实例上使用它class ActivitiesController < ApplicationController
def index #Added .public_activities
@activities = Activity.public_activities.order("created_at desc").where(current_user.following_ids)
end
end
在这里,您试图在 Activity class 上调用 class 方法。
如果您想执行上述操作,则需要在 Activity class.
上创建一个范围在这种情况下,名字中的"activities"部分最好不要重复,直接叫"public"
例如
class Activity < ActiveRecord::Base
belongs_to :user
has_many :comments, as: :commentable
belongs_to :trackable, polymorphic: true
scope :public, ->{ where(:private => false) }
def public?
private == true ? false : true
end
end
class ActivitiesController < ApplicationController
def index
@activities = Activity.public.order("created_at desc").where(current_user.following_ids)
end
end