代码之家  ›  专栏  ›  技术社区  ›  gucki

activerecord到续集的转换

  •  1
  • gucki  · 技术社区  · 14 年前

    我使用的是Rails3.rc和activerecord3(带有meta\u where),刚刚开始切换到Sequel,因为它看起来更快,而且提供了一些非常棒的特性。

    1. 据我所知,我应该使用 User[params[:id]] 而不是 User.find(params[:id]) where identity_map ? 解决这两个问题的最佳方法是什么?

    2. 有没有一个简单的方法来翻转像 User.messages_dataset User.messages 以便 用户消息 行为类似于活动记录( User.messages_data_set ). 我想我应该用 #..._dataset 很多,但从不需要数组方法,因为我可以添加 .all ?

    3. 我注意到一些相同的(复杂的)查询有时会在一个动作中执行多次。是否有类似于活动记录查询缓存的内容( 似乎对这些案子不起作用)。

    4. 有什么问题吗 to_sql

    1 回复  |  直到 5 年前
        1
  •  3
  •   the Tin Man    5 年前
    1. 您可以使用:

      User[params[:id].to_i] || raise Sequel::Error
      

      或者写你自己的方法来做类似的事情。Sequel支持非整数主键,因此不会自动进行转换。它不应该对身份地图有任何影响。请注意,除非您使用的是identity\u map插件,否则Sequel不会使用identity map。我想最好的方法是编写自己的helper方法。

    2. 不是真的。你可以用 association_proxies 插件,以便将非数组方法发送到数据集,而不是对象数组。一般来说,不应该过多地使用关联数据集方法。如果你经常使用它,这是一个迹象,你应该有一个特定的用法协会。

    3. Dataset#sql 给你机会 SELECT SQL