@nodes = Node.select(...................... render json: @nodes
然后我想在@nodes里加一个字段 比如:
@nodes.video = "aaa"
该怎么写???
反正就是这个意思,不知道有没有表达清楚
我知道在 ruby 里 @nodes 是作为 ActiveRecord 的对象的
还是应该先把对象转换成散列,再赋值那?
没看出你这有必要赋值到 nodes 上
Dynamically defining a method on a single instance in Ruby
https://honnef.co/posts/2009/10/ruby-dynamic-method/
def @nodes.video= value @video = value end
你用 serializer 吗?可以在 serializer 里定义,jbuilder 也可以随便定义的,不过细节上有什么区别我不太清楚
video 是不是真实存在于数据库表里的?
video 是在其他表里的
就是在一个已生成的对象中添加原来没有一个字段
应该说类似于 JavaScript 的原型那种(不知道这样说有没有问题)
你直接搞个虚拟属性好了 attribute :video, :string 或者你也可以先 hash = nodes.serializable_hash 得到散列表,然后 hash[:video] = ‘’来搞
这个要写在 Model 里吗?controllers 不能实现这种操作吗?
我在 Node 类里加上 attribute :video, :string 提示没有 video 对象
nodes.serializable_hash 提示没有 serializable_hash 对象
你用的 Rails 几?
‘rails', '~> 5.1.4
ruby 2.5.0p0
我懂了,你那个 @nodes 返回的是多个 Node 数据,那么你是想给 @nodes 加 video 做法就有问题了,还是你想给每一个 Node 加 video 呢?
@nodes
Node
video
对对,是这样的。要给每一个 Node 加 video
@nodes 是 ActiveRecord::Relation 对象,要取每个 node 的"字段",应该是 map(&:video)
ActiveRecord::Relation
map(&:video)
XY 问题
Node 里,在 attribute :video, :string 之前,加上 attr_accessor :video 先定义这个属性,然后声明他为 ActiveRecord 的属性,即可,赋值时候要遍历对象进行赋值
attribute :video, :string
attr_accessor :video
不需要写在 Model 里,只加在那个实例上,但这种不是好的 practice 😁
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル