我是网络编程的新手,我已经读过,避免使用Ajax来提供太多内容的原因之一是因为该内容实际上是隐藏在搜索引擎中的.这对我来说很有意义.
我刚刚遇到HTML5中的data-属性.您可以在其中放置的字符串值的长度似乎没有限制.data-*属性是否遇到与Ajaxing相同的错误?谷歌是否将这些属性中的值存储为有意义的页面信息,还是仅忽略它?
(我没有具体的问题,所以我不知道这个问题是否符合stackoverflow的标准,我只是真的很好奇,而且我自己找不到太多信息 - 部分是因为我不知道是什么搜索,因为我对这个主题比较新.)
在我的数据库中,我有一个表people,我正在使用单表继承,这些类:
class Person < ActiveRecord::Base
end
class Member < Person
end
class Business < Member
end
Run Code Online (Sandbox Code Playgroud)
它产生的查询让我很困惑.我想要的是Member.all返回所有企业以及会员的任何其他子类型.这是什么,但只有我最近访问过Business类.我认为这是因为我的类没有被缓存在开发模式中(出于显而易见的原因),但它仍然看起来像奇怪/错误的行为.
这是rails中的错误吗?还是按预期工作?在任何一种情况下,任何人都可以想到一个很好的发展目的吗?
我的产品模型有一个jsonb字段specs(我们使用ActiveRecord管理它store_accessor).我的许多产品的规格都有一个称为哈希的规范spec_options.
在此之前,这个spec_option领域只是文字.现在它需要是一个数组.
之前用于查询此字段的产品的范围是:
scope :with_spec_options, ->(spec_options) {
where("'#{spec_options}'::jsonb \? (specs->>'spec_option')")
}
Run Code Online (Sandbox Code Playgroud)
Ruby等价物(只是为了帮助理解这是做什么):
select{ |product| spec_options.include?(product.specs['spec_option']) }
Run Code Online (Sandbox Code Playgroud)
ActiveRecord等价物(如果spec_option是常规列):
where(spec_option: spec_options)
Run Code Online (Sandbox Code Playgroud)
但是,现在这specs['spec_options']是一个数组,我不能这样做.我想我需要使用postgres的?|jsonb运算符,但我无法弄清楚如何将此操作的右侧转换为正确的格式.
Ruby等价物:
def self.with_spec_options(spec_options)
all.select{|product|
if product.specs['spec_options'].present?
product.specs['spec_options'].any?{|option|
spec_options.include?(option)
}
else
false
end
}
end
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?