Ruby on rails RoR:如何访问另一个模型中的模型对象

Ruby on rails RoR:如何访问另一个模型中的模型对象,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我在我的应用程序中创建了一个新模型-PaypalOrder。现在,在这个模型的其中一个方法中,我希望能够访问current\u order对象。其中Order是一个现有模型。如何在RubyonRails中实现这一点 我读过关于联想的书,但它们似乎有点复杂 编辑: 使用关联的问题是,并非每个订单都有相应的PaypalOrder。但无论何时有付款订单,我都希望访问订单。如何设置此关联方法是使用关注点,其工作原理如下: 型号: # app/models/PayPayOrder.rb class Pay

我在我的应用程序中创建了一个新模型-PaypalOrder。现在,在这个模型的其中一个方法中,我希望能够访问
current\u order
对象。其中Order是一个现有模型。如何在RubyonRails中实现这一点

我读过关于联想的书,但它们似乎有点复杂

编辑
使用关联的问题是,并非每个订单都有相应的PaypalOrder。但无论何时有付款订单,我都希望访问订单。如何设置此关联

方法是使用关注点,其工作原理如下:

型号:

# app/models/PayPayOrder.rb
class PayPalOrder < BaseModel
  # concerns

  include MyMultipleNeededMethods

  ...

  def now_i_use_the_concern_method
    concern_method
  end

  ...
end
永远不要试图以这种方式交叉引用方法。使用给定的rails框架,其awesom;-)

那么:

class PaypalOrder
  belongs_to :order
end
?

在paypal_orders表中需要一个“order_id”列

就这样

然后使用创建PaypalOrder

def some_action
  current_order = Order.find(some_id)
  paypal_order = PaypalOrder.new(order: current_order)
  #do what you want with paypal_order
end
如果你没有订单,我会做什么

bundle exec rails g migration AddUserToPaypalOrder

以及改变方法

add_column :paypal_orders, :user, :references


嗯。。。当前订单和当前用户以及通常当前用户与会话紧密相关。因此,它们只能由控制器访问。因为模型正在处理业务域逻辑,所以它们不应该访问这些对象…

您想做什么?看起来你有一个设计问题,不清楚你为什么需要访问PaypalOrder中的当前订单,而且,关联可以为你节省很多时间,如果你认为关联很复杂,那么你可能用错了方法,写一些你想要的例子do@arieljuod我想在方法中获得
current\u order
对象的值,并将它们传递给一个脚本,该脚本生成一个APIcall@arieljuod:使用关联的问题是并非每个
订单
都会有相应的
付款订单
。但是,每当我想访问PaypalOrder时,它都会使用关联,非常简单,不关心订单是否有PaypalOrder OK,谢谢你的回答。我已经更新了问题,如何设置所需的关联。我在创建
PaypalOrder
模型时未设置关联。我现在必须再创建一次吗?我没想到你会想使用关联。您需要在模型中使用:bellowns\u to和:has\u one关系,并将事务保存到数据库中。我在paypal\u orders中有一个order\u id列。迁移文件看起来像't.integer:order\u id t.string:ip\u address t.string:first\u name t.string:last\u name t.string:card\u type t.date:card\u expires\u on
。但是我如何将此列值设置为订单表的
id`of orders??当您保存paypal\u order=PaypalOrder记录时,关联会处理此问题。new(order:current\u order)设置paypal\u order.order\u id=current\u order.id,然后当您保存paypal\u order时,order\u id保存到dbOk,现在我明白了。但是我如何才能通过id找到订单。我不知道当前订单的id是什么。有没有办法找到答案?订单itsef还没有保存,所以没有对应的id。只需像以前一样获取当前订单(订单数据来自表单?只需实例化一个新订单,然后使用数据),然后以同样的方式将订单分配给paypal\u order,rails将在保存paypal\u order时处理所有事情,它将保存订单并将订单id保存在paypal\u订单中
add_column :paypal_orders, :user, :references
add_column :paypal_orders, :user_id, :integer