无论何时调用该模型,都可以创建自定义模型属性并默认包含其值吗?
我有一个名为Video
的模型。它有一个名为name
的属性。它包含视频sample-video.mp4
的名称。我想为模型创建两个名为iphone_url
和android_url
的自定义属性。
两个属性都有不同的url与name连接。因此,iphone_url
将http://link1/+name+/playlist.m3u8
android_url
将http://link2/+name
是否有可能我称之为该模型,两个属性都会自动添加(在JSON响应中)?
我尝试了here提到的解决方案。
我可以使用attr_accessor
添加自定义属性,但它们的值始终为null。可能是因为他们的价值需要先手动设定。
那怎么办呢?
修改:目前,我这样做:
videos = Array.new
# Dirty, but works
Video.all.each do |video|
video = video.attributes
wowza_server = "X.X.X.X:XXXX/AppName/"
custom_attributes = {:wowza_urls => {:ios => "http://"+wowza_server+"mp4:"+video[:name])+"/playlist.m3u8", :android => "rtsp://"+wowza_server+video[:name])}}
videos << video.merge(custom_attributes)
end
render :json => videos, status: :ok
答案 0 :(得分:0)
这就是jbuilder的真正含义。
Jbuilder为您提供了一个简单的DSL,用于声明按摩巨型哈希结构的JSON结构。
你开始按摩一个巨大的哈希结构。
我假设这是一个索引视图,在这种情况下它看起来像这样:
json.array! @videos do |video|
json.my_field video.my_field
json.iphone_url video.iphone_url
json.android_url video.android_url
end
在app/model/video.rb
class Video
def iphone_url
"some_url_to_build"
end
...
end