1

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

@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

除了它不起作用。如何创建一个方法来返回更新的实例,以便可以对其进行进一步的链接?

更新: 我的错,这就是我做错了:可链接的方法被命名为“用户”,因此它与模型自己的blog.user方法冲突。我将名称更改为独特的名称,瞧!有用。

4

2 回答 2

1

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

@blog = current_user.blogs.create

关于您提出的问题,返回 self 应该完成工作 idd,您能否在创建博客时编写控制台的输出,并让我们知道输出是什么:

@blog.inspect

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

于 2012-11-20T19:12:31.213 回答
1

您的set_user方法应该返回一个用户实例。self在这种情况下是Blog

def set_user(user)
  user
end

如果您正在使用 Rails 并且两者之间存在关联,Blog并且User您已经能够做到

blog.userblog.users基于您在这些模型之间的关联类型。

于 2012-11-20T19:01:19.427 回答