我需要使用attr_accessor吗?

时间:2012-01-15 21:58:47

标签: ruby-on-rails attr-accessor

我打算按照此railscast中描述的方式使用条件验证。在railscast中,使用attr_accessor相当旧,(跳到视频的后面部分查看代码)。我对rails编程比较陌生,想要了解attr_accessor的作用。这个post询问使用它,最受欢迎的答案说它们几乎不应该用在轨道上。

是否有必要/我应该像在railscast中一样使用attr_accessor吗?或者这些方法是自动创建的?在这种情况下使用attr_accessor有危险吗?

1 个答案:

答案 0 :(得分:4)

使用attr_accessor与Active Record无关。我在this post讨论它是如何工作的,这也与AR有关。

现在,AR 做了什么,是否会根据数据库模型自动创建自己的“访问者”方法(例如x/x=。这些自动创建的方法实际上只是用于代理内部AR工作的存根。

重点是,attr_accessor(自动)包装简单的实例变量访问,而AR(自动)创建的方法包装AR魔术。这两项业务是互相排斥的。因为attr_accessor没有“链接”到AR魔法,所以它可以用于创建不持久的瞬态字段:AR不知道或不关心实例变量。

“危险”来自于可能使模型对象与瞬态信息复杂化 - 如果它是瞬态的,为什么它应该成为模型对象的一部分?这是最多投票的论点在链接问题中回答。

快乐的编码。


但是,我不知道如果将attr_accessor用于与AR模型中恰好相同的字段时会发生什么......至少是混乱。