应用程序逻辑和Active Record示例Rails

时间:2015-05-18 20:54:39

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

我想问两件事:

1)在Rails的应用程序逻辑中,将Model调用到另一个Model是否正确? 换句话说:

class A
  def function1
   ...
  end
end

class B
  def function2
    A.function1
  end
end

这只是一个例子,两个模型之间没有任何关联。

第二个问题是:

2)当我在Rails控制台中调用时:c = Supply.where(product_id:7) 我有这个结果

enter image description here

我无法打电话:c.quantity

如果我使用c = Supply.find(1) 我可以打电话给c.quantity

enter image description here

有什么区别?

全部谢谢

enter image description here

1 个答案:

答案 0 :(得分:0)

将模型调用到另一个模型中/从另一个模型中调用是很好的。这是常见的做法。至于第二个问题:

如果您通过id查询,请始终使用find,因为它返回单个对象而不是关系。

#this will work
c = Supply.find(7).quantity

如果您使用的地方需要从结果集中提取单个对象。例如:

# this will work but since you are using where you need to ask for a specific object.
c = Supply.where(product_id: 7).first.quantity