Ruby on rails 创建初始化对象后设置属性的方法

Ruby on rails 创建初始化对象后设置属性的方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在初始化一个新对象并设置属性(因为此特定对象没有属性),然后再呈现如下形式: def new Book.new title: nil, author: nil, genre: nil, language: nil, ect... end 在我看来,这就像是一种代码气味 我试图在模型中的方法中设置属性,以便通过使用:Book.new.set\u attributes提高可读性。因此,书本模型中我的set\u attributes方法如下所示: def set_attributes {

我正在初始化一个新对象并设置属性(因为此特定对象没有属性),然后再呈现如下形式:

def new
  Book.new title: nil, author: nil, genre: nil, language: nil, ect...
end
在我看来,这就像是一种代码气味

我试图在模型中的方法中设置属性,以便通过使用:
Book.new.set\u attributes
提高可读性。因此,书本模型中我的
set\u attributes
方法如下所示:

def set_attributes
  {posted: nil, company: nil, poster: nil, city: nil, state: nil, title: nil, body: nil, keywords: nil}
end

但是,这不起作用(有或没有
{}
括号)。使用
.new
后是否可以调用方法?

Ruby的构造函数方法是
初始化
,而不是
新建
。您不应该尝试定义名为
new
的方法。做一些类似于:

class Book
  attr_accessor :title, :author
  def initialize(title = nil, author = nil)
    @title = title
    @author = author
  end
end

Ruby的构造函数方法是
initialize
,而不是
new
。您不应该尝试定义名为
new
的方法。做一些类似于:

class Book
  attr_accessor :title, :author
  def initialize(title = nil, author = nil)
    @title = title
    @author = author
  end
end

您不需要初始化nil值。调用Book.new时,哈希中未提供的任何值(例如Book.new(标题:“Bozo”,作者:“小丑”)将自动为nil。

您不需要初始化nil值。调用Book.new时,散列中未提供的任何值(例如Book.new(标题:“Bozo”,作者:“小丑”)将自动为零。

您使用此功能找到了一个好位置吗?您使用此功能找到了一个好位置吗?