我在我的应用程序 - PaypalOrder中创建了一个新模型。现在在这个模型的其中一种方法中,我希望能够访问current_order
对象。订单是现有模型。我怎样才能在轨道上做红宝石?RoR:如何访问另一个模型中的模型对象
我读到关于关联,但他们似乎有点复杂。
编辑: 使用关联的问题是不是每个订单都会有相应的PaypalOrder。但是每当有一个PaypalOrder我想访问订单。我怎样才能建立这种关联
我在我的应用程序 - PaypalOrder中创建了一个新模型。现在在这个模型的其中一种方法中,我希望能够访问current_order
对象。订单是现有模型。我怎样才能在轨道上做红宝石?RoR:如何访问另一个模型中的模型对象
我读到关于关联,但他们似乎有点复杂。
编辑: 使用关联的问题是不是每个订单都会有相应的PaypalOrder。但是每当有一个PaypalOrder我想访问订单。我怎样才能建立这种关联
怎么样:
class PaypalOrder
belongs_to :order
end
?
你paypal_orders表需要一个 “ORDER_ID” 列
,这就是它
然后创建与
def some_action
current_order = Order.find(some_id)
paypal_order = PaypalOrder.new(order: current_order)
#do what you want with paypal_order
end
一个PaypalOrder,如果你不具备的order_id做
bundle exec rails g迁移AddUserToPaypalOrder
和改变方法
add_column :paypal_orders, :user, :references
或
add_column :paypal_orders, :user_id, :integer
我在paypal_orders中有一个order_id列。迁移文件如下所示:t.integer:order_id t.string:ip_address t.string:first_name t.string:last_name t.string:card_type t.date:card_expires_on'。但是,如何将此列值设置为订单表的'id'? – nish
协会负责的,当你保存PaypalOrder记录,paypal_order = PaypalOrder.new(顺序:current_order)设置paypal_order.order_id = current_order.id,那么当你保存paypal_order,ORDER_ID被保存到数据库 – arieljuod
好了,现在我理解。但是,我将如何能够通过id找到订单。我不知道当前订单的ID是什么。任何找到这个的方法? – nish
去的方式是使用顾虑,它的工作原理是这样的:
型号:
# 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框架,其awesom ;-)
好的,谢谢你的回答。我已经更新了这个问题,我如何设置所需的关联。我在创建“PaypalOrder”模型时没有建立关联。我必须现在再创建一次吗? – nish
没想到你想要与协会合作。您需要在模型中使用:belongs_to和:has_one关系,并将事务保存到数据库。 –
唔... current_order和curren_user通常current_s紧张的会议。所以他们只能被控制器访问。由于模型正在处理业务领域的逻辑,他们不应该访问这些对象...
你想要做什么?看起来你有一个设计问题,目前还不清楚为什么你需要访问PaypalOrder内的current_order,还有,为了节省大量的时间,如果你认为关联很复杂,那么你可能会以错误的方式使用它们,写一些你想做的例子 – arieljuod
@arieljuod我想要在方法中获取current_order对象的值,并将它们传递给一个API调用的脚本 – nish
@arieljuod:使用关联的问题不是每一个'订单'将有一个相应的'PaypalOrder'。但每当有一个PaypalOrder我想要访问'订单' – nish