【问题标题】:Ruby DataMapper::ImmutableErrorRuby DataMapper::ImmutableError
【发布时间】:2023-04-07 18:24:01
【问题描述】:
get '/watch/:id' do |id|
    @results = Twitchtvst.all( :fields => [:Twitchtv ],
                 :conditions => { :user_id => "#{id}" }           
               )  
    #p @results.inspect
    @results.each do |result|
      puts result.id
    end

    erb :mystream
  end

我收到此错误消息,无法延迟加载不可变资源。我该如何解决这个问题?

错误信息是:

DataMapper::ImmutableError at /watch/1
Immutable resource cannot be lazy loaded

【问题讨论】:

  • 什么错误信息???
  • 不可变资源不能延迟加载

标签: ruby datamapper


【解决方案1】:

据官方documentation

请注意,如果您在所选列中不包含主键,您将无法修改返回的资源,因为 DataMapper 不知道如何持久化它们。如果您仍然尝试这样做,DataMapper 将引发 DataMapper::ImmutableError。

我知道您在这里没有修改任何内容,但我认为相同的规则适用于延迟加载。所以我会建议这样尝试:

@results = Twitchtvst.all( :fields => [:Twitchtv, :id],
             :conditions => { :user_id => "#{id}" }           
           )  ode here

记下 id 作为附加字段。

【讨论】:

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