我想在返回json对象时向模型添加一些文本。例如
format.json { render :json => @user.to_json, :status => 200 }
@user模型包含一个名为website的字段。用户网站的格式为www.mysite.com,但我希望生成的json显示http://www.mymysite.com。
例如,可能有数千名用户。
@users = User.all
format.json { render :json => @users.to_json, :status => 200 }
我不想浏览所有用户并逐个更新网站列。有没有办法在模型中定义这个,其中网站的返回值是http:// + self.website?
我研究的越多,看起来我会覆盖方法def as_json(options = {}),但我不知道如何修改网站字段。
答案 0 :(得分:1)
您可以在User
模型类(app/model/user.rb
)中使用以下方法:
def website_with_protocol
"http://#{self.website}"
end
然后,您可以执行:@user.website_with_protocol
,以便在开头使用http://
来访问用户的网站。
或者,如果您不介意,可以通过在模型类中定义website
方法来覆盖数据库中的website
列,如下所示:
def website
"http://#{self.read_attribute(:website)}"
end
所以,现在如果你打电话给:@user.website
,那么它会给你这样的内容:http://www.mymysite.com
,因为website
在模型类中被覆盖。
<强> P.S。使用read_attribute方法读取数据库中的website
值。