簡體   English   中英

RoR:如何訪問另一個模型中的模型對象

[英]RoR: How to access a model object in another model

我在我的應用程序中創建了一個新模型-PaypalOrder。 現在,在該模型的一種方法中,我希望能夠訪問current_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,

捆綁exec rails g遷移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緊密聯系。 因此它們只能由控制器訪問。 由於模型正在處理業務域邏輯,因此它們不應訪問這些對象...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM