Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails从散列递归实例化活动记录模型_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails RubyonRails从散列递归实例化活动记录模型

Ruby on rails RubyonRails从散列递归实例化活动记录模型,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我有两个类继承自ActiveRecord::Base,一个用户可能有许多徽章 class用户“kim bilir nerede”},这是Hash(#47159016253160)的一个实例 是否有任何方法可以从该散列中递归实例化我的所有模型,或者我是否需要在我的Userclass'initialize方法中手动执行该操作 我想解决这个问题的办法是: class用户

我有两个类继承自
ActiveRecord::Base
,一个
用户可能有许多
徽章

class用户
class-Badge
当我为
用户
调用API时,我得到以下响应:

{
    "UserInfo": {
        "CursePeriod": null,
        "IsCursed": false,
        "IsBanned": false,
    },
    "Badges": [
        {
            "Name": "kayıp",
            "Description": "kim bilir nerede"
        },
        {
            "Name": "çaylak",
            "Description": ""
        }
    ],
    "HasEntryUsedOnSeyler": false,
    "FollowerCount": 0,
    "FollowingsCount": 0,
    "Picture": null
}
当我将json作为散列传递给
User.new时,我得到

ActiveRecord::AssociationTypeMismatch:预期为徽章(#47159034390540),
得到了{:name=>“kayıp”,:description=>“kim bilir nerede”},这是Hash(#47159016253160)的一个实例
是否有任何方法可以从该散列中递归实例化我的所有模型,或者我是否需要在我的
User
class'
initialize
方法中手动执行该操作

我想解决这个问题的办法是:

class用户@badgesActiveRecord不支持多个初始化,这意味着您不能传递一个数组并期望一个类有多个实例,因为它们反映了这一点,
new
用于实例化属于从
ActiveRecord::Base
继承的X类的新对象


您可以做的是使用,它可以接受一个哈希数组,其中包含您所创建的每个记录所需的数据。

虽然不是您所需要的,但嵌套属性有些相似,可能值得研究。我会检查的,谢谢。您必须从
散列
中提取实例化新用户所需的数据。您不能传递整个散列并期望只使用所需的散列,这就是为什么您会收到错误消息。。。这是Hash(…)的一个实例。我只是想我必须使用
user\u info\u attributes
键,而不是
user\u info
。那么我在
更新的
部分就不会出现这种错误。这听起来比我的方法好。所以我可以简单地做
标记。创建
然后传递数组。如果这不是一个数组,而只是一个散列,那么
是否会接受
的_嵌套的_属性_?我一直在尝试其他关联,但我得到了相同的
associationtypemistmatch
错误。我可以更新我的问题以包含该部分。你可以传递一个散列数组,它将在数据库中插入记录,只要这些记录有效且不抛出任何错误(错误的列名等)。在单个散列的情况下,Ruby中就是这样调用方法的
create
将把散列中的每个键作为模型中的属性及其对应的值,与以前一样,如果记录有效,它将保存记录。在json响应中使用像my
UserInfo
这样的单个散列,我可以为my
UserInfo
类使用
接受嵌套的属性吗?我已经更新了我的问题以包括这一部分。你能检查一下吗?我看到了错误,但不是它发生的原因,你能添加整个解决方法@AndréYuhai吗?刚才添加了我如何尝试使用散列来获取
用户
的实例。您可以在我的答案顶部看到类定义,它已经为
接受了嵌套的属性。