我有一个 Apollo GraphQL 服务器,我有一个删除记录的突变。此更改接收资源的 UUID,调用 REST(Ruby on Rails)API,当删除成功时,该 API 仅返回成功的 HTTP 代码和空正文(204 无内容)以及带有错误的 HTTP 错误代码删除不起作用时的消息(404 或 500,典型的 REST 删除端点)。
在定义 GraphQL 突变时,我必须定义突变返回类型。突变返回类型应该是什么?
input QueueInput {
"The queue uuid"
uuid: String!
}
deleteQueue(input: QueueInput!): ????????
Run Code Online (Sandbox Code Playgroud)
我可以使它与几种不同类型的返回(布尔值、字符串等)一起工作,但我想知道什么是最佳实践,因为我尝试过的返回类型都没有感觉是正确的。我认为重要的是,在调用突变后,在客户端我有一些关于如果事情进展顺利(API 返回 204 不是内容)或如果发生一些错误(API 返回 404 或 500)发生了什么的信息,并且最好有一些关于错误。
我有这个代码在html5页面播放视频:
<video autoplay loop id="bgvid">
<source src="video-background.mp4" poster="/poster.png" type="video/mp4">
</video>
Run Code Online (Sandbox Code Playgroud)
问题是它不适用于移动Chrome(Android手机)和手机游戏(iPhone).但它适用于桌面上的"每个"浏览器(使用Safari,Chrome,Firefox测试)以及移动版Firefox(Android手机).
我该如何克服这个问题?
编辑: 添加此代码:
var myVideo = document.getElementById("bgvid");
function playVid() {
myVideo.play();
}
function pauseVid() {
myVideo.pause();
}
Run Code Online (Sandbox Code Playgroud)
如果我添加一个触发函数playVid()的按钮就可以了.所以我认为问题在于自动播放.我试图用load事件触发函数,但它不起作用.
我当前的Index操作如下所示:
def index
@proposals = current_user.proposals
end
Run Code Online (Sandbox Code Playgroud)
但我想这样做:
def index
@proposals = policy_scope(Proposal)
end
Run Code Online (Sandbox Code Playgroud)
我和has_and_belongs_to
之间有关系.User
Proposal
我开始Pundit
在我的应用程序中使用gem,但我不知道如何定义范围以便为普通用户提供上面显示的行为.
我想做这样的事情:
class Scope < Scope
def resolve
if user.admin?
scope.all
else
user.proposals # HOW DO I DO THIS WITH THE SCOPE?
end
end
end
Run Code Online (Sandbox Code Playgroud)
如何user.proposals
使用范围变量?我知道,如果我有一个has_many
和belongs_to
关系,我可以这样做:
else
scope.where(user_id: user.id) # RIGHT?
end
Run Code Online (Sandbox Code Playgroud)
但就HABTM而言,我不知道该怎么做.
有帮助吗?
ruby ruby-on-rails has-and-belongs-to-many ruby-on-rails-4 pundit
如何计算出现在两个字符串中的单词数?
我在考虑这样的事情
let $nequalwords := count($item[text() eq $speech])
Run Code Online (Sandbox Code Playgroud)
做这个的最好方式是什么?
我想与两个人for
逐字逐句比较,但我不知道是否有更好的方法来做到这一点.
我的应用程序中有一个 HABTM 关系,如下所示:
class Book < ActiveRecord::Base
has_and_belongs_to_many :authors
end
class Author < ActiveRecord::Base
has_and_belongs_to_many :books
end
Run Code Online (Sandbox Code Playgroud)
在 Rails 控制台中,我可以像这样访问 Book 和 Author 的记录:
Book.all
Book.first
b = Book.first
b.title = "Title2"
b.save
...
Run Code Online (Sandbox Code Playgroud)
但我不知道如何访问连接表。
如何访问和查看连接表中的记录books_authors
?
是否可以更改连接表行?
many-to-many join ruby-on-rails rails-console ruby-on-rails-4
我必须创建一个迁移来进行数据库级别验证.迁移:
class DataBaseLevelValidation < ActiveRecord::Migration
def change
add_index :benefits_business_changes, [:benefit_id, :business_change_id], :unique => true
end
end
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当我尝试运行时,rake db:migration
我有这个错误:
Index name 'index_benefits_business_changes_on_benefit_id_and_business_change_id' on table 'benefits_business_changes' is too long;
the limit is 62 characters/Users/mariocardoso/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/schema_statements.rb:797:in `add_index_options'
Run Code Online (Sandbox Code Playgroud)
但如果我将名称更改为更短的版本,我会得到:
SQLite3::SQLException: no such table: main.benefits_businessc: CREATE UNIQUE INDEX "index_benefits_businessc_on_benefit_id_and_business_change_id" ON "benefits_businessc"
Run Code Online (Sandbox Code Playgroud)
我怎样才能克服这个问题?
我看到的唯一方法是将"business_change"模型更改为更短的名称(模型,视图,迁移,......所有内容).
有没有办法运行此迁移而没有长名称引起的错误?