新手警报
我正在看Ryan关于虚拟属性的RailsCasts之一。他正在为博客平台上的一篇文章添加标签。http://media.railscasts.com/assets/episodes/videos/167-more-on-virtual-attributes.mp4
有一段时间他有工作代码
attr_accessor :tag_names在本例中,如果标记名进行验证,则它们不会出现在表单中,因此他更改了属性的名称,并添加了一个方法,以便在其他字段出现验证错误时标签名保持不变。
attr_writer :tag_names
def tag_names
@tag_names || tags.map(&:name).join(' ')
end我的问题是,您能不能结合他添加的方法,说明将attr_accessor更改为attr_writer的意义?添加该方法时为什么需要更改属性名?
(注意,我已经阅读了关于attr_accessor和attr_writer的文档,但仍然没有足够的点击量,所以我不明白他在创建该方法时为什么要做这个更改)
发布于 2011-10-15 01:03:07
attr_accessor: :tag_names创建这两种方法:
def tag_names
@tag_names
end和
def tag_names=(value)
@tag_names=value
end因为Ryan有自己的tag_names ("reader")方法,所以他不需要用attr_accessor动态创建它。他只需要attr_writer创建的("writer")方法。
https://stackoverflow.com/questions/7774957
复制相似问题