【问题标题】:ActiveRecord where similar to findActiveRecord 类似的地方可以找到
【发布时间】:2013-01-20 22:39:20
【问题描述】:

Rails 有方法 where 返回 Relation 和 find 方法,它接受实体并基于主要的外观(你不应该明确指定它)。

有没有接受实体的 where 方法?

例如,User.where(params[:id]) -> 从 user.id = ... 的用户中选择 ..

【问题讨论】:

    标签: ruby-on-rails rails-activerecord


    【解决方案1】:

    如果您已经有了用户记录,为什么还需要使用 where 再次找到它?如果是关联,可以做User.where(:company_id => company.id)之类的操作,但不能通过记录本身。

    另外,User.find(params[:id])User.where(:id => params[:id]).first 相同。

    【讨论】:

    • 我的意思是:Post.find(params[:id]) - 将使用 id 并查看 Post.primary_key == id,我如何使用 where 方法做到这一点?
    • id 明确指定。 find(params[:id]) 使用映射中的主键。 Find 将与 FriendlyId 一起使用,但在哪里不会。
    • 为什么你的主键不是id? Rails 不喜欢这样。如果可以的话,我建议你把它改回来,以避免扯掉你的头发。另请参阅,stackoverflow.com/questions/10079195/…
    • 我想让github.com/norman/friendly_id 在哪里玩。我认为重点是更改主键,但我错了,FriendlyId 会覆盖查找器方法。不过还是谢谢!
    【解决方案2】:

    以下工作,但我不明白你为什么要寻找你已经拥有的对象?

    User.where(:id => user)
    

    【讨论】:

    • id 明确指定。 find(params[:id]) 使用映射中的主键
    • 你能多说一下上下文吗,你需要这个吗?
    • 我发现,友好的 id 会覆盖查找器方法。我误解了。无论如何,感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 2011-11-14
    • 2014-11-23
    • 1970-01-01
    相关资源
    最近更新 更多