[英]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.