让 Rails 模型解释表中列以外的值
我在模型上使用一系列命名范围来生成查询。在该查询中,有一个与另一个表的连接,其中有一些布尔字段。 当我访问这些列的值时,它返回字符串(“0”和“1”)。
有没有一种干燥的方法来告诉模型如何解释这些列?(我知道我可以编写方法来覆盖访问器,但这感觉不对)。
我正在使用 Rails 2.3.8。
I use a series of named scopes on a model to generate a query.In that query there's a join with another table in which I have some boolean fields.
When I access the values of those columns it returns strings("0" and "1").
Is there a DRY way to tell the model how to interpret those columns?(I know i can write methods to override the accesor, but that doesn't feel right).
I'm using rails 2.3.8.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您所说的“覆盖访问器”是指 read_attribute 和 write_attribute 方法,那么这绝对是正确的方法。 Rails 类型自动转换字段,据我所知,没有直接的方法来影响类型转换,只能重写setters/getters。
为了完整起见,举个例子:
注意:对于更复杂的情况(比如密码加密),最好的方法是 ActiveRecord Callbacks 。看看那里的例子。
If by "override the accessor" you meant
read_attribute
andwrite_attribute
methods, then this is absolutely the correct way to do this. Rails type casts fields automatically and AFAIK there is no direct way to influence type casting, only overriding setters/getters.For integrity's sake, an example:
Note: for more complex cases (say password encryption) the best way would be ActiveRecord Callbacks. Take a look at the examples there.