如果在RABL上有条件

时间:2017-08-04 19:40:42

标签: ruby-on-rails ruby rabl

我的关系中有两个属性 - flyer和flyer_url。我想设置一个if条件,它将flyer或flyer_url分配给flyer_image_url,具体取决于哪个不为null。所有记录都将其中任何一个设置为null。我已经尝试了以下代码,但它只是将flyer_url分配给flyer_image_url,即使它为null:

attribute :flyer => :flyer_image_url
attribute :flyer_url => :flyer_image_url, :if => lambda { |flyer_url| !flyer_url.nil? }

请帮忙! 谢谢!

1 个答案:

答案 0 :(得分:0)

感谢RABL的创造者Nathan Esquenazi,我终于得到了答案。

这是RABL的限制(尽管有些有意),对于给定的键名“flyer_image_url”,应该只有一个与之关联的语句。尝试将两个与单个键相关联的语句引起混淆。

他建议使用单个节点而不是自定义逻辑:https://github.com/nesquena/rabl#custom-nodes

node :flyer_image_url do |object|
   object.flyer_url.nil? ? object.flyer : object.flyer_url
   # This is just ruby, put whatever you want that ends up as a string
end

这就像一个魅力!希望这个答案能找到一个人!

相关问题