我已经阅读了一些与此相关的帖子,它仍然没有点击给我。我有一个例子,我试图保持尽可能简单,以便我可以理解外键分配是如何进行的。
user.rb
Class User < ActiveRecord::Base
has_many :microposts
end
micropost.rb
Class Micropost < ActiveRecord::Base
belongs_to :user
end
我在microposts_controller的另一篇文章中找到了一些代码...
def create
@micropost = current_user.microposts.build(params[:micropost])
if @micropost.save
...
else
...
end
end
答案 0 :(得分:0)
current_user
通常由像Devise这样的身份验证框架提供。它可以通过查看用户登录时创建的会话来确定该用户。是的,如果至少使用Devise创建名为Customer的模型,则current_customer将在“客户”登录后工作。
答案 1 :(得分:0)
<强>答案强>
否current_user
不是Rails方法。它由一些身份验证框架提供,大多数应用程序实现一个current_user
辅助方法,该方法返回通常在会话或实例变量上设置的当前用户。
不,因为该方法未由模型定义。 current_customer
不起作用。有一些方法可以创建一个动态方法,给出一个具有其他名称的模型,例如Customer
,您可以编写一个method_missing,它可以提供所需的输出,但这可能更适合它的用途。
返回问题1.方法current_user
将返回User
的实例,该实例是当前登录的用户,结果将类似于@current_user.microposts.build
current_user的代码通常类似于
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
这就是说找到一个先前存储在cookie中的remember_token
用户,或者如果已经设置了@current_user
则使用{{1}}。
希望这有帮助!