【发布时间】:2012-09-20 20:05:45
【问题描述】:
有一个模型
class PlaylistModel < ActiveRecord::Base
/* code */
end
然后在控制器动作中有这样的代码
PlaylistController < ActionController::Base
def a_action
@item = Playlist.find(10)
@item[:visited] = true
end
end
但是,PlaylistModel(或播放列表表的模式)中没有定义visited 属性!看起来一个新属性正在动态添加到对象中。这是正在发生的事情吗?所有这些功能在哪里定义/我可以在哪里阅读更多相关信息。
感谢您的帮助!
【问题讨论】:
-
有趣,您似乎可以通过说@item[:visited]=true 添加属性,但是当您键入@item.inspect 时,[:visited]=true 属性未列出。 .. 但显然可以通过键入 @item[:visited] 访问
-
当您检查模型时,属性编写器不一定会公开所有属性。它仅公开可通过
attr_accessor、attr_reader等访问的已定义列名和属性。请参阅我在下面发布的链接。
标签: ruby-on-rails ruby ruby-on-rails-3 activerecord ruby-on-rails-3.1