我正在尝试制作一个可链接的方法,以便我可以写:
@blog = Blog.new.set_user(current_user).save
而不是
@blog = Blog.new
@blog.user = current_user
我在模型中定义了以下方法:
def set_user(user)
self.user = user
return self
end
除了它不起作用。如何创建一个方法来返回更新的实例,以便可以在其上进行进一步的链接?
更新
我的不好,这就是我做错了:可链式方法被命名为“user”,因此它与模型自己的blog.user
方法相冲突。我把名字改成了一个独特的东西,瞧!它有效。
答案 0 :(得分:1)
您的set_user
方法应返回用户实例。在此上下文中self
是Blog
def set_user(user)
user
end
如果您使用的是Rails且Blog
和User
之间存在关联,那么您已经可以
blog.user
或blog.users
。
答案 1 :(得分:1)
我会尝试在Rails中避免这种情况,并使用模型关联和范围来完成部分工作:
@blog = current_user.blogs.create
关于你问的问题,返回self应该做idd工作,你可以在创建博客时编写控制台的输出,并告诉我们输出的结果:
@blog.inspect
也许错误发生在其他地方......