【发布时间】:2012-03-05 09:45:09
【问题描述】:
尝试在我的资产模型中使用 current_user.id(设计),只有 current_user.id 不可用。如何使 current_user.id 在我的资产模型中可用? (以某种方式将用户传递给资产模型?)
after_save :set_photo
def set_photo
user = User.find_by_id(1)
# user = User.find_by_id(current_user.id) <-- should be this
user.has_photo = true
user.save
end
【问题讨论】:
-
您无法访问模型中的当前用户,因为它是设计提供的辅助方法。如果你用谷歌搜索“在模型中使用 current_user”,你会发现一个实现多线程的解决方案,但我个人避免这样做,特别是如果我使用 ActiveRecord,因为它可能与 AR 的连接池发生冲突。
-
顺便说一句,你能详细说明你想要做什么。我可以理解,如果保存了任何资产对象,您希望将当前用户的
has_photo字段设置为 true。您将 Asset 用于什么,它是否与 User 相关联?如果您想要一个简单直接的解决方案,那么在assets#create和assets#update中,您可以简单地为current_user更新has_photo字段(如果您愿意,可以在用户中创建一个实例方法)如果创建或更新成功. -
资产属于用户?谢谢
-
“如果资产被删除,如何在更新操作中检测到”.. 你是什么意思?删除是指删除资产还是说用户可以添加或删除图像的某种形式?
-
嗯..so,资产属于用户。然后,用户拥有一个(或多个)资产。那么,您允许当前用户创建资产,对吗?很抱歉,但我需要有关整个场景的更多信息,以便能够提出更具体的建议。
标签: ruby-on-rails ruby-on-rails-3 inheritance activerecord models