首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取具有`text`类型的字段

问获取具有`text`类型的字段
EN

Stack Overflow用户
提问于 2013-07-22 22:14:47
回答 4查看 57关注 0票数 0

类Issue继承自ActiveRecord (Ruby1.9.3p429(40747-05-15修订版) x86_64-linux,Rails 3.2.13)。在这个类中,我尝试执行以下select操作:

代码语言:javascript
复制
results = Issue.find_by_sql("select id, notes from mydb.issues;")
results.each do |r|
  puts r.notes.class.name
end

每一行的输出都是NilType。

字段notes的类型是text (MySQL,Ver14.14Distrib5.5.31,用于debian-linux-gnu (x86_64),使用readline6.2)。这是这个字段中的一些文本,我可以在MySQL工作台上看到它。

为什么会发生这种情况?如何正确访问这样的字段?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-22 23:45:42

根据@Frederick Cheung和@Salil提供的指针,我发现Issue类具有以下定义:

代码语言:javascript
复制
delegate :notes, :notes=, :to => :current_journal, :allow_nil => true

当然,在结果记录集中更改名称notes可以解决这个问题。

票数 0
EN

Stack Overflow用户

发布于 2013-07-22 22:28:05

您可能已将notes添加为attr_protected

代码语言:javascript
复制
  class Issue < ActiveRecord::Base
    attr_protected :notes
  end

  issue = Issue.new("notes" => "Some notes here")
  issue.notes # => nil
票数 1
EN

Stack Overflow用户

发布于 2013-07-22 22:28:43

我认为你这样做是错误的,你已经从你的表中选择了所有的注释,现在你的results对象包含了数组中的所有注释,所以你只需要遍历它:

如果你有另一个'Note‘模型,那么你必须这样做:

代码语言:javascript
复制
results = Issue.find_by_sql("select * from mydb.issues;")
results.each do |r|
  puts r.notes.class.name
end

或者,如果您的问题表中有备注字段,则应执行以下操作:

代码语言:javascript
复制
results = Issue.find_by_sql("select notes from mydb.issues;")
results.each do |r|
  puts r.class.name
end

希望这能有所帮助。谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17789860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档