0

title给定一个具有, title_sp, ,等字段的表title_jp,并且知道用户的特定语言值(例如 jp),在运行时将表字段重新映射到模型属性的方法是什么。类似于在find(*args).

类似于以下内容:

Posts.find(:all, :conditions => {:published => true}, :language => "jp")

并让返回Posts.title的值由添加的理想指针中的值填充,如果它是 nil/empty title_jp.,它也能够回退到。title/title_entitle_jp

我一直在研究 overriding .find,但无法弄清楚如何批量重新映射字段名称。

4

1 回答 1

0

做这样的事很危险。您可以使用一些 find_by_sql 来执行此操作,但是如果您将对象保留回来,您可能会更改原始标题,因为模型不会知道它不是原始值。

更好的解决方案是创建一个虚拟属性,它根据参数选择要返回的最佳列。使用起来可能有点问题,但这样更安全。编写包装器并不难,因此可以通过一次调用访问整个集合,并将每个集合中的虚拟属性设置为正确的值。

如果您有多个要覆盖的字段,您可以编写一个小解决方案来为每个字段创建一个虚拟属性。如果您需要更多信息,请告诉我!

于 2012-04-25T12:17:27.170 回答