在rails中返回修改后的对象

时间:2012-11-20 18:58:38

标签: ruby-on-rails ruby

我正在尝试制作一个可链接的方法,以便我可以写:

@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方法相冲突。我把名字改成了一个独特的东西,瞧!它有效。

2 个答案:

答案 0 :(得分:1)

您的set_user方法应返回用户实例。在此上下文中selfBlog

def set_user(user)
  user
end

如果您使用的是Rails且BlogUser之间存在关联,那么您已经可以

根据您在这些模型之间的关联类型,

blog.userblog.users

答案 1 :(得分:1)

我会尝试在Rails中避免这种情况,并使用模型关联和范围来完成部分工作:

@blog = current_user.blogs.create

关于你问的问题,返回self应该做idd工作,你可以在创建博客时编写控制台的输出,并告诉我们输出的结果:

@blog.inspect

也许错误发生在其他地方......