我正在编写一个应用程序,用于将我的iTunes xml库解析为Ruby中的数据库,并且我遇到了问题...我有一个Cover模型,它有一个字段,Filename,我需要以这种方式从另一个字段Album_ID派生
Filename = Album_ID由10' 0和jpg扩展名填充...
但是,字段ALBUM_ID,顾名思义,是其他模型Album的外键。我保存相册时只收到ALBUM_ID ...
有没有办法派生我的文件名文件夹来使用回调来获取ALBUM_ID,我不知道,也许BEFORE_SAVE或AFTER_SAVE?
- == UPDATE == -
让我澄清一下......我的COVERS表名为FILENAME中有一个字段...此字段必须存储封面的文件名,格式为
对于ID为1 = 0000000001.jpg的专辑 对于ID为56 = 0000000056.jpg的专辑
专辑模型与封面模型有HAS_MANY关系...当我保存专辑时,我需要将保存的值保存到封面模型中的ALBUM_ID并创建该格式的字符串并在文件名字段中使用它。
我在应用程序的另一部分中执行扫描,在我的库文件夹中将封面jpgs复制到另一个文件夹...这就是我需要重命名文件的原因
答案 0 :(得分:1)
根据我的理解,您使用Cover
模型belongs_to
Album
模型,使用album_id
字段。
创建Album
时,您可以轻松地将关系模型与.build
album = Album.new(:name => "Foo", :artist => "Bar", ...)
album.cover = Cover.build(:filename => "filename.png")
# save when you're done
album.save
现在,当您保存album
时,cover
会自动使用正确的album_id
创建。{/ p>
再次阅读你的帖子之后,你的Cover
模型的唯一目的似乎是生成一张带有相册ID的jpg。
如果您有jpg 00000000001.jgp
,为什么不在帮助器或视图中生成名称?
<强> show.html.erb 强>
<img url="0000000000<%= @album.id%>.jpg"/>
答案 1 :(得分:0)
我决定停止在我的数据库中存储文件名,并使用类方法从album_id派生文件名,如下面的函数所示
def getFilename
return self.album_id.to_s.rjust(10,'0') + '.jpg'
end