我有一个游戏模型has_many:文本.问题是我必须根据他们属于哪个游戏来区分不同的文本(是的,丑陋的,但它是遗留数据).我创建了一个Text.in_game_order_query(game)
方法,它返回适当的顺序.
我最喜欢的解决方案是在Text模型中放置一个默认范围,但这需要知道它们属于哪个游戏.我也不想为每个游戏的文本创建单独的类 - 有很多游戏,有更多的游戏,所有较新的游戏将使用相同的顺序.所以我有另一个想法:在has_many中订购文本,当我知道它们属于哪个游戏时:
has_many :texts, :order => Text.in_game_order_query(self)
Run Code Online (Sandbox Code Playgroud)
但是,self就是这里的类,所以这不起作用.
除了@game.texts.in_game_order(@game)
每次呼叫之外,真的没有其他解决方案吗?
我正在使用Nokogiri打开关于各个国家的维基百科页面,然后从interwiki链接中提取其他语言的这些国家的名称(链接到外语wikipedias).但是,当我尝试打开法国页面时,Nokogiri不会下载整页.也许它太大了,无论如何它不包含我需要的interwiki链接.我怎么强迫它下载所有?
这是我的代码:
url = "http://en.wikipedia.org/wiki/" + country_name
page = nil
begin
page = Nokogiri::HTML(open(url))
rescue OpenURI::HTTPError=>e
puts "No article found for " + country_name
end
language_part = page.css('div#p-lang')
Run Code Online (Sandbox Code Playgroud)
测试:
with country_name = "France"
=> []
with country_name = "Thailand"
=> really long array that I don't want to quote here,
but containing all the right data
Run Code Online (Sandbox Code Playgroud)
也许这个问题超越了Nokogiri并进入OpenURI - 无论如何我需要找到一个解决方案.
将应用程序复制到生产环境时,我的 POSTGIS 表列开始出现异常,Rails 通知我存在“未知 OID 26865”并且这些字段将被视为字符串。
而不是 current_pos 产生,例如
#<RGeo::Geographic::SphericalPointImpl:0x22fabdc "POINT (13.39318248760133 52.52908798020595)">
我会得到0101000020E6100000FFDD958664C92A403619DEE6B2434A40
. 看起来 activerecord-postgis-adapter 没有安装,或者安装不当,但我通过测试数据类型 RGeo::Feature::Point 的存在并通过测试分配
current_pos = "POINT (13.39318248760133 52.52908798020595)"
到该字段来消除这种可能性- 没有错误地进行但随后产生了另一个像上面那样难以理解的十六进制字符串。
此外,奇怪的是,POSTGIS 在数据库中正常工作,例如为 ST_DISTANCE 查询提供正确的结果。因此,这是一个非常有限的问题,其中写入、写入解析(从点到十六进制格式)、通过 SQL 操作和读取都有效,只有读取时的解析没有。
当我尝试使用迁移来确保数据库列具有正确的类型时,迁移失败,给出
undefined method `st_point' for #<ActiveRecord::ConnectionAdapters::PostgreSQL::TableDefinition:0x00000005cb80b8>
Run Code Online (Sandbox Code Playgroud)