【问题标题】:How can I display the data of the current_user only? Not of all users如何仅显示 current_user 的数据?不是所有用户
【发布时间】:2015-06-07 00:47:33
【问题描述】:

在我的 index.html.erb 中,我显示 @events,它被定义为(在我的 event_controller 中)

@events = Event.all 

在我的 application_controller 我将@current_user 定义为

@current_user ||= Maker.find(session[:maker_id]) if session[:maker_id]

基本上我使用的是maker,而不是通常的user

我意识到因为@events = Event.all 它会显示所有的事件,而不管制作者是谁,但我想知道,我怎样才能只显示那些事件 current_user 的maker_id 相关联?

目前的问题是一个maker可以在Event#index中看到另一个maker的事件。

事件和制造者的关系是:

class Event < ActiveRecord::Base

  belongs_to :maker 

end

class Maker < ActiveRecord::Base

  has_many :events

end

【问题讨论】:

  • 在事件控制器内的索引方法中使用这个@events = current_user.events
  • 谢谢,这似乎奏效了

标签: ruby-on-rails ruby


【解决方案1】:

你应该做类似的事情

@events = current_user.try(:events) || Event.all

所以即使 current_user 为 nil 也不会报错。

【讨论】:

  • 问题是如果没有当前用户,@events 将为零。这可能是预期的行为,但也可以是“如果没有当前用户,则显示所有事件”。
  • @jvnill 现在可以了吗?
  • 嗯,这仍然是您必须满足的 OP 要求,但就个人而言,我更喜欢 where 并尝试尽可能停止使用 try
  • 为什么不想用try?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多