这是我尝试插入具有电子邮件属性的实体的地方。在浏览器中,U 可以看到收到了 db_success。在数据存储区查看器中,我可以看到该实体是通过 2 次写入插入的,这非常低,浏览到该实体时我可以看到实体类型、实体键和 ID,但没有别的:
c := appengine.NewContext(r)
u := user.Current(c)
if u == nil || !user.IsAdmin(c) {
return
}
addrmv := r.FormValue("addrmv")
user_email := r.FormValue("user_email")
if addrmv == "add" {
if user_email == "" {
return
}
uemail := uemail_struct{
user_email: user_email,
}
_,err := datastore.Put(c,datastore.NewIncompleteKey(c,"users",nil),&uemail)
if err != nil {
io.WriteString(w, "\"result\":\"db_error\"")
} else {
io.WriteString(w, "\"result\":\"db_success\"")
}
} else if addrmv == "rmv"{
return
//TODO expand
}
另一段代码是我想根据电子邮件限制用户访问的地方。我尝试对我之前插入的实体的电子邮件属性进行数据存储查询,并将授权帐户重定向到预期页面,并将未经授权的帐户重定向回应用程序入口 url:
c := appengine.NewContext(r)
u := user.Current(c)
if u == nil {
http.Redirect(w, r, "/", http.StatusSeeOther)
} else if user.IsAdmin(c) {
io.WriteString(w, admins_choice_html)
} else {
var emails []uemail_struct
q := datastore.NewQuery("users").Filter("user_email =", u.Email)
_,err := q.GetAll(c,&emails)
if err != nil {
http.Redirect(w, r, "/", http.StatusSeeOther)
}
if len(emails) == 0 {
url, err := user.LogoutURL(c, "/")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Location", url)
w.WriteHeader(http.StatusFound)
} else {
http.Redirect(w, r, "/dist/index.html", http.StatusSeeOther)
}
}
我确定我的测试数据和添加用户电子邮件的功能没问题。这意味着我为数据 user@example.com 电子邮件地址执行了第一段代码,并为相同的 user@example.com 电子邮件地址执行了第二段代码。我能得出的唯一结论是,放在第一段代码中的数据存储没有在数据存储中插入值为 user@example.com 的所需属性 user_email。
最佳答案
我发现问题出在我定义结构的方式上。而不是
type uemail_struct{
user_email string
}
简单的写
type Uemail_struct{
User_email string
}
修复程序,现在添加新用户和他们的登录工作。
关于google-app-engine - 尝试将实体放入数据存储区似乎只放置了一个键,而不是我想到的关联属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37691719/
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我有一个具有一些属性的模型:attr1、attr2和attr3。我需要在不执行回调和验证的情况下更新此属性。我找到了update_column方法,但我想同时更新三个属性。我需要这样的东西:update_columns({attr1:val1,attr2:val2,attr3:val3})代替update_column(attr1,val1)update_column(attr2,val2)update_column(attr3,val3) 最佳答案 您可以使用update_columns(attr1:val1,attr2:val2
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
我有这个html标记:我想得到这个:我如何使用Nokogiri做到这一点? 最佳答案 require'nokogiri'doc=Nokogiri::HTML('')您可以通过xpath删除所有属性:doc.xpath('//@*').remove或者,如果您需要做一些更复杂的事情,有时使用以下方法遍历所有元素会更容易:doc.traversedo|node|node.keys.eachdo|attribute|node.deleteattributeendend 关于ruby-Nokog
我有一张背景图片,我想在其中添加一个文本框。我想弄清楚如何将标题放置在其顶部的正确位置。(我使用标题是因为我需要自动换行功能)。现在,我只能让文本显示在左上角,但我需要能够手动定位它的开始位置。require'RMagick'require'Pry'includeMagicktext="Loremipsumdolorsitamet"img=ImageList.new('template001.jpg')img 最佳答案 这是使用convert的ImageMagick命令行的答案。如果你想在Rmagick中使用这个方法,你必须自己移植
对于Rails模型,是否可以/建议让一个类的成员不持久保存到数据库中?我想将用户最后选择的类型存储在session变量中。由于我无法从我的模型中设置session变量,我想将值存储在一个“虚拟”类成员中,该成员只是将值传递回Controller。你能有这样的类(class)成员吗? 最佳答案 将非持久属性添加到Rails模型就像任何其他Ruby类一样:classUser扩展解释:在Ruby中,所有实例变量都是私有(private)的,不需要在赋值前定义。attr_accessor创建一个setter和getter方法:classUs
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西: