如果条件在 RABL

If condition on RABL

我的关系中有两个属性 - 传单和 flyer_url。我想放置一个 if 条件,根据哪个不为空,将 flyer 或 flyer_url 分配给 flyer_image_url。所有记录都将其中一个设置为空。我试过下面的代码,但它只分配 flyer_url 给 flyer_image_url 即使它是空的:

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

请帮忙! 谢谢!!

感谢 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

太棒了!希望这个答案能找到人!