我在我的应用程序中创建了一个新模型 - PaypalOrder。现在在这个模型的一个方法中,我希望能够访问current_order
对象。 Order是现有模型。我怎么能在轨道上的ruby中做到这一点?
我读到了关联,但它们看起来有点复杂。
修改: 使用关联的问题在于并非每个Order都有相应的PaypalOrder。但是每当有PaypalOrder我都想访问Order。如何设置此关联
答案 0 :(得分:1)
怎么样:
class PaypalOrder
belongs_to :order
end
您需要在paypal_orders表中使用“order_id”列
就是这样
然后使用
创建一个PaypalOrderdef 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 migration AddUserToPaypalOrder
和更改方法
add_column :paypal_orders, :user, :references
或
add_column :paypal_orders, :user_id, :integer
答案 1 :(得分:0)
要走的路是使用顾虑,它的工作原理如下:
型号:
# 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框架,它的真棒; - )
答案 2 :(得分:0)
Hm ... current_order和curren_user以及通常current_s对会话来说很紧张。因此只能由控制器访问它们。由于模型正在处理业务域逻辑,因此他们不应该访问这些对象......