【问题标题】:rails object created from method or services class is not automatically initialised从方法或服务类创建的 rails 对象不会自动初始化
【发布时间】:2016-09-12 14:29:54
【问题描述】:

我对 Rails 比较陌生,并尝试从模型创建对象(我也尝试过在 app/services/ 中创建的服务)。

对象被创建,但是当我访问试图调用对象上的方法的页面时失败(我想使用 .find(id) 并且我收到关于“nil”方法的消息,因此):

当我在一个 nil 方法错误后在控制台中检查对象时,对象已经创建,但所有变量类型都设置为'nil':

如果我从控制台创建同一类的新对象,则该对象具有键入的变量:

Trans(id: integer, transaction_id: integer, sender_id: string, recipient_id: string, created_at: datetime, updated_at: datetime, amount: float)

创建对象的代码是

transaction = Trans.new
transaction.find(id)

我从模型内部的方法中调用它。我通过将所有内容放入服务中并从其中创建服务对象来尝试相同的方法。结果是一样的。

这是否意味着由于某种原因没有调用构造函数/初始化程序?我没有覆盖或更改初始化程序。

这适用于 Rails 4。

我正在尝试创建一个对象,以便查询数据库。

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    虽然我已经为此工作了几个小时,但我在发布问题后不久就发现了问题所在。

    对象需要这样创建:

    trans = Trans.find(id)
    

    而不是

    trans = Trans.new
    
    result = trans.find(id)
    

    这对我来说似乎违反直觉,但它确实有效。

    我希望这可以节省我失去的几个小时!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多