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



我在我的应用程序中创建了一个新模型 - PaypalOrder。现在,在这个模型的方法之一中,我希望能够访问current_order对象。其中 Order 是现有模型。如何在轨道上的红宝石中执行此操作?

我读过关于协会的文章,但它们似乎有点复杂。

编辑:使用关联的问题在于,并非每个订单都有相应的PaypalOrder。但是每当有PaypalOrder时,我都想访问Order。如何设置此关联

呢:

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

如果您没有order_id

bundle exec rails g migration AddUserToPaypalOrder

和更改方法

add_column :paypal_orders, :user, :references

add_column :paypal_orders, :user_id, :integer

要走的方法是使用关注点,它的工作原理是这样的:

型:

# app/models/PayPayOrder.rb
class PayPalOrder < BaseModel
  # concerns
  include MyMultipleNeededMethods
  ...
  def now_i_use_the_concern_method
    concern_method
  end
  ...
end

关注:

# app/models/concerns/MyMultipleNeededMethods.rb
module MyMultipleNeededMethods
  extend ActiveSupport::Concern
  def concern_method
    puts "refactored like a boss"
  end
  ...
end

永远不要尝试以这种方式交叉引用方法。使用给定的rails框架,它的敬畏;-)

嗯... current_order和curren_user,通常current_s都紧紧地进行会话。因此,它们只能由控制器访问。由于模型正在处理业务域逻辑,因此它们不应该访问这些对象...

相关内容

  • 没有找到相关文章

最新更新