我使用设计进行身份验证,并希望以下工作:
我正在关注本教程:http://clearcove.ca/blog/2010/11/how-to-secure-a-rails-app-on-heroku-with-ssl-firesheep/
但我正处于需要让Devise做authlogic在这里做的部分.救命!!;)
以下查询适用于本地但不适用于生产:(生产是 heroku 正在运行 postgreSQL,而在本地我正在运行 sqllite 数据库)
红宝石
Tutor.joins(:expertises).where(:expertises => {:subject_id => [2,4]}).group("tutors.id").having("COUNT(*) = 2")
Run Code Online (Sandbox Code Playgroud)
SQL
SELECT "tutors".* FROM "tutors" INNER JOIN "expertises" ON "expertises"."tutor_id" = "tutors"."id" WHERE ("expertises"."subject_id" IN (9)) GROUP BY tutors.id HAVING COUNT(*) = 1 ORDER BY rank DESC)
Run Code Online (Sandbox Code Playgroud)
我在生产 ActiveRecord::StatementInvalid (PGError: ERROR: column "tutors.fname" must出现在 GROUP BY 子句中或在聚合函数中使用时收到以下错误
我的表中有以下值
id :integer not null, primary key
fname :string(255)
lname :string(255)
school :string(255)
major :string(255)
year :string(255)
bio :text
vid :string(255)
price :integer
phone :string(255)
skype :string(255)
address :text …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Node w/express上传图像,我收到以下错误.我在这方面看到了一些问题,指出异步数据库调用是导致问题的原因.我想在理论上使用bodyParser,bodyParser应该只是通过我连接然后强大,所以我更喜欢不禁用bodyParser的解决方案.
就我而言,我没有进行数据库调用 - 我的所有代码都在下面复制.任何人都可以放弃的任何亮点都将非常感激.
500错误:分析器错误,在IncomingForm.write(/Users/me/Projects/Project/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:145:17)在IncomingMessage解析44个字节40.(/Users/me/Projects/Project/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:95:12)在IncomingMessage.emit(events.js:64:17)在HTTPParser.onBody( http.js:121:23)在Socket.ondata(http.js:1026:22)在Socket._onReadable(net.js:683:在IOWatcher.onReadable 27)作为回调(net.js:177:10 )
这是我的app.js文件(咖啡脚本):
express = require('express')
routes = require('./routes')
app = module.exports = express.createServer()
app.configure(() ->
app.set('views', __dirname + '/views')
app.set('view engine', 'jade')
app.use(express.bodyParser({
uploadDir: '/tmp/upload'
}))
app.use(express.methodOverride())
app.use(express.cookieParser())
app.use(app.router)
app.use(express.static(__dirname + '/public'))
)
app.configure('development', () ->
app.use(express.logger())
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }))
)
app.configure('test', () ->
app.use(express.logger())
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }))
)
app.configure('production', () ->
app.use(express.logger())
app.use(express.errorHandler())
)
app.get('/images/new', (req, res) ->
console.log("getting image form")
res.render('forms/image_upload', {title: 'Images'})
) …Run Code Online (Sandbox Code Playgroud) 这是我的代码:
$('#fb_login_form').bind('ajax:loading', function() {alert("loading!");});
.bind('ajax:success', function(data, status, xhr) {alert("success!");})
.bind('ajax:failure', function(xhr, status, error) {alert("failure!");})
.bind('ajax:complete', function() {alert("complete!");});
Run Code Online (Sandbox Code Playgroud)
ajax:success和ajax:complete火,我看到两个警报.ajax:loading才不是.
我使用的是jQuery而不是原型.为什么?
我正在使用弹性搜索,并不完全了解索引是什么.例如,如果我有3个模型(背包,鞋子和手套),我是否将每个模型放在自己的索引中,或者我是否对每个模型的属性进行索引:即我为鞋子的鞋带,鞋底等编制索引?
我试图了解搜索索引是否很慢.例如,如果我索引我的模型的每个属性,并且我说,20个索引,当我运行需要查看所有索引中的数据的搜索时,这比具有单个索引并查看存储的20个属性更慢在那个指数?
我们的rails应用程序允许未登录的用户创建消息对象的消息注册用户,将其存储在我们的数据库中,然后将内容通过电子邮件发送给注册用户.在我们的暂存应用程序中,我们已经开始从抓取我们网站的机器人收到大量垃圾邮件.我们担心两件事:
有什么好方法可以解决这个问题?我知道我们可以实现验证码系统,但从用户体验的角度来看这并不理想.我们还可以阻止中国(或者攻击源自哪里)的地方的IP,但我们也可能希望为中国的用户提供服务.
此外,我相信rails具有内置功能来清理查询字符串并防止SQL注入,但默认情况下是否启用?在这种情况下,我们是否应该关注防止导轨默认不处理的其他事情?
有什么建议?
我正在尝试使用Heroku在此建议的说明生成自签名证书:http://www.akadia.com/services/ssh_test_certificate.html
这将创建sever.key和server.crt.
然后我尝试使用以下命令将它们添加到heroku:
heroku ssl:添加server.crt server.key,我收到以下错误
找不到域名.确保将mycorrectdomain.heroku.com域添加到您的Heroku app/Key与PEM证书不匹配
这是server.crt文件的内容:
-----BEGIN CERTIFICATE-----
MIICvTCCAiYCCQDyHGnBdtovbzANBgkqhkiG9w0BAQUFADCBojELMAkGA1UEBhMC
VVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQHDAlQYWxvIEFsdG8xEzARBgNVBAoMClR1
dG9yQ2xvdWQxETAPBgNVBAsMCFNvZnR3YXJlMSMwIQYDVQQDDBp0ZXN0LXR1dG9y
Y2xvdWQuaGVyb2t1LmNvbTElMCMGCSqGSIb3DQEJARYWYmxhaXJAbXl0dXRvcmNs
b3VkLmNvbTAeFw0xMTA4MDMxNzQ4NDdaFw0xMjA4MDIxNzQ4NDdaMIGiMQswCQYD
VQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCVBhbG8gQWx0bzETMBEGA1UE
CgwKVHV0b3JDbG91ZDERMA8GA1UECwwIU29mdHdhcmUxIzAhBgNVBAMMGnRlc3Qt
dHV0b3JjbG91ZC5oZXJva3UuY29tMSUwIwYJKoZIhvcNAQkBFhZibGFpckBteXR1
dG9yY2xvdWQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqWEjXRDo0
CBzoIqnpzPN6Ussf476JDX+9uCkpaSyR6Oxarjpc55lw+Mnb9UNiBWPS6JJ/Hq2c
CgkGD9uu11OXRCRvsZeyJjd2YT1B+XZsXrKZVj2C2dj1r6DXzAV2G5EwWJDklaH3
x1uA+muPt7NZ4Dz2WNv9FMyicTTCdMhWlwIDAQABMA0GCSqGSIb3DQEBBQUAA4GB
AJYAgjiHyUxyeFRR2nJ3CLanjNtkzVz+Dk7pdu/p0P35YpYhE95q76xgcOFasWe2
+pUwxTjtQvhc0BRHjohSjiF8+ZFLRfsPq9kmh55AFzDj7V8dzUek4yVyZRtcIdNQ
Gx8I5g8vJClLnHbYQlaCupVIxVZqnp7SKeeshduCsJ/8
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我试图找出在我的网站上组织一堆AJAX方法的最佳方法.问题是我希望在收到每个回调后运行一堆回调.这是一个例子(假设每个方法异步运行):
Log_in_user
if response received and call was successful
get_user's_data
if response received and call was successful
alert user
Run Code Online (Sandbox Code Playgroud)
希望现在问题很明显.因为每个方法都是异步运行的,所以代码不会按顺序运行.相反,我希望传递下一个函数作为回调运行在运行它的函数之后运行,我将不得不将越来越多的回调传递给第一个函数,这取决于我希望在每个函数之后发生多少事情.异步方法返回.例如,在这种情况下,我将不得不将两个回调传递给Log_in_user函数Log_in_user(get_user's_data,alert_user).我在彼此之后运行的回调越多,我将需要传递给原始Log_in_user函数的回调越多.
是否有更模块化和更有条理的方式来做到这一点?
我想制作一个能处理所有与facebook相关的问题的对象.例如,我想说object.is_access_token_valid?或object.get_user_email或object.authenticate_user.我想在这个对象中打包很多复杂的功能,我想从对象的用户那里抽象出来.在java中,这将是一个对象.什么会在红宝石/铁轨?
这是我的具体情况:
我收到此错误:ActiveRecord :: StatementInvalid:找不到表
这是我的代码:
class FacebookSession < ActiveRecord::Base
#include OauthHelper
attr_accessor :fb_token, :fb_client, :fb_user_id, :fb_email
def initialize
@fb_client = client # makes new oauth client
@fb_token = OAuth2::AccessToken.new client, fb_token
end
def get_email
self.fb_token.get('/me/interests')
end
def get_fb_user_id
self.fb_token.get('/me/interests')
end
def authenticate
#if this fb_user_id is in the database, log them in otherwise don't
end
def is_valid?
if(try_access_token(self.access_token))
return true
else
return false
end
end
end
Run Code Online (Sandbox Code Playgroud) 我在heroku上有3个我的rails应用程序实例(测试,舞台和制作).当我想测试真实用户数据发生的问题时,我想使用heroku db:pull --app production,然后是heroku db:push --app test.问题是,此时heroku rake db:migrate --app test会抛出一个错误,因为已经创建了迁移尝试创建的列.
我的理解是heroku db:push将数据推送到现有的数据库模式,而不是逐字推送整个数据库(包括模式).这意味着我们推送的模式可能比我们推送的迁移表更高级,因为此迁移表将丢失尚未在我们从中提取的数据库上运行的迁移记录,但显然已在我们推送到的数据库上运行.
我的第一个问题是,我是否理解这是如何工作的?我的第二个问题是如何解决这个问题,以便我可以提取生产数据,坚持测试并运行迁移而不会收到此错误.理想情况下,我想复制生产数据库并将其粘贴在测试中,然后完全迁移它,因为如果我能做到这一点,我就不必担心测试中的现有模式.有没有办法做到这一点?
如果没有,是否有办法通过使用已在我的测试数据库上运行的每个迁移的记录填充新的迁移表来伪造已经运行的迁移?
heroku ×2
jquery ×2
activerecord ×1
ajax ×1
devise ×1
express ×1
indexing ×1
javascript ×1
node.js ×1
postgresql ×1
ruby ×1
search ×1
security ×1
sqlite ×1
ssl ×1