事件有一列popularity和许多关键字.关键字具有类别和名称.我试图通过它们的受欢迎程度来命令事件,但是只返回每个关键字名称中最受欢迎的事件和"分类法"类别.
这是我的查询:
Event
.order(:popularity)
.joins(:keywords)
.where(keywords: {category: "taxonomy"})
.group("keywords.name")
Run Code Online (Sandbox Code Playgroud)
但我得到以下错误:
PG :: GroupingError:错误:列"events.id"必须出现在GROUP BY子句中或用于聚合函数
我哪里错了?
我试图在我的用户模型上使用Devise但是当我进入rails控制台并尝试User.new我只得到:
irb(main):002:0> User.new
=> #<User id: nil, first_name: nil, last_name: nil, email: nil, created_at: nil, updated_at: nil>
Run Code Online (Sandbox Code Playgroud)
为什么设计专栏没有出现?
CreateUsers迁移:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :first_name
t.string :last_name
t.string :email
t.timestamps null: false
end
end
end
Run Code Online (Sandbox Code Playgroud)
AddDeviseToUsers迁移:
class AddDeviseToUsers < ActiveRecord::Migration
def self.up
change_table :users do |t|
## Database authenticatable
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## …Run Code Online (Sandbox Code Playgroud) 当用户注册尝试失败时,我的应用会将其重定向到根网址,而不是呈现注册页面.
路线:
resources :users
devise_for :users, path: '', path_names: { sign_up: 'register', sign_in: 'login', sign_out: 'logout'}, :controllers => { :omniauth_callbacks => "callbacks" }
Run Code Online (Sandbox Code Playgroud)
注册#新:
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), :html => {:class => "col s12 form-text", autocomplete: "off"}) do |f| %>
<%# render 'devise/errors', resource: resource %>
<div class="row">
<div class="input-field col s12">
<%= f.text_field :full_name, :class => "validate", :required => true, :placeholder => "Robin Smith" %>
<%# f.label :full_name, :class => "allcaps active", :data => {:error => 'Name …Run Code Online (Sandbox Code Playgroud) 有没有办法复制到移动剪贴板?我已经研究了几天但没有找到一个好的解决方案.Clipboard.js似乎不适用于移动设备,给我一个错误"没有支持:("
我目前正在使用以下功能:
function copytext(text) {
var textField = document.createElement('textarea');
textField.innerText = text;
document.body.appendChild(textField);
textField.select();
document.execCommand('copy');
textField.remove();
}
Run Code Online (Sandbox Code Playgroud)
在我的桌面上像chrome上的魅力一样工作.但在Chrome手机上,没有任何东西被复制.
那里有解决方案吗?
我有一个复杂的调查表格.一项调查
belongs_to :template
has_many :questions, :through => :template
has_many :answers, :through => :questions
Run Code Online (Sandbox Code Playgroud)
即用户创建新调查,他必须选择调查模板.调查模板将创建一些默认问题和答案字段.
<%= form_for @survey do |f| %>
<p>Select a template:</p>
<%= render @templates, :locals => {:patient => @patient }, :f => f %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
然后我渲染_templates部分,我仍然可以访问表单对象.从这里开始,用户可以点击模板名称,模板问题和答案将通过Ajax呈现.
<% @templates.each do |template| %>
<div class="thumbnail">
<%= link_to template.name,
{ :controller => "surveys",
:action => "new",
:template_id => template.id,
:patient_id => nil,
:f => f,
:remote=> true },
:class=> "template", :id=> template.id %>
</div>
<% end %> …Run Code Online (Sandbox Code Playgroud) 使用Rails和Kaminari gem,我在渲染视图时遇到以下错误:
#Array的未定义方法`total_pages':0x007faa486583e0
控制器:
def index
@user = current_shop.users.new
@users = current_shop.active_users ### This returns an array
Kaminari.paginate_array(@users).page(params[:page]).per(10)
end
Run Code Online (Sandbox Code Playgroud)
视图:
<tbody>
<%= paginate @users %>
<% @users.each do |user| %>
<%= render 'user_table_row', :user=> user %>
<% end %>
</tbody>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我有一个Shopify应用程序,在创建新商店时运行回调.我刚刚发现了一个错误,当应用程序被卸载,然后重新安装时,回调没有运行,因为商店实际上没有再次创建(我不会在卸载时从我的数据库中删除商店).
class Shop < ActiveRecord::Base
include ShopifyApp::Shop
after_create :init_webhooks
def self.store(session)
shop = Shop.where(:shopify_domain => session.url).first_or_create({ shopify_domain: session.url,
:shopify_token => session.token,
:installed => true})
shop.id
end
def self.retrieve(id)
shop = Shop.where(:id => id).first
if shop
ShopifyAPI::Session.new(shop.shopify_domain, shop.shopify_token)
else
nil
end
end
Run Code Online (Sandbox Code Playgroud)
我可以运行检查以查看shop.installed = false,然后如果它是假的,我可以init_webhooks.但我只是不确定我应该把这个逻辑放在哪里.我不知道放入商店或检索方法是否合适.
我想知道是否有一些我想念的简单.基本上我想运行我的init_webhooks,如果webhooks不存在.
编辑:我尝试了下面的解决方案,将我的回调重构为他们自己的方法,我可以检查是否安装了应用程序然后,如果没有,运行我想要的新安装方法:
def self.retrieve(id)
shop = Shop.where(:id = id).first
if shop
shop.boot
ShopifyAPI::Session.new(shop.shopify_domain, shop.shopify_token)
else
nil
end
end
def boot
if !installed
shopify_session
init_webhooks
self.installed = true
self.save!
end
end
Run Code Online (Sandbox Code Playgroud)
这似乎适用于全新的安装,但在重新安装时,用户似乎没有进行身份验证(在进入shopify网址后保持重定向到/ login页面)<
我收到上述错误并试图获得更多见解。我的应用程序有 3 种类型的后台作业和大约 100 个用户,所以没什么太重的。
我的目标是能够同时处理多个后台作业(因此,如果 10 个用户执行相同的作业,则他们不需要在开始之前等待其他作业完成)。
我很困惑我需要多少 dyno,我需要多少工人,我需要多少 redis 连接。所有这些东西有什么区别?
我目前的设置有:
1 x 专业网络测功机 1 x 专业调度器测功机 3 x 专业工人测功机
和我的档案:
web: bundle exec rails server -p $PORT
scheduler: bundle exec rake resque:scheduler
worker: env TERM_CHILD=1 QUEUE='*' COUNT='3' bundle exec rake resque:workers
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Redis::CommandError: 达到 ERR 最大客户端数
我只是感到惊讶,因为我想要实现的目标似乎非常简单。
我的Rails应用程序中有一些JS代码,可以在新会话中向Mixpanel发出跟踪事件.
从理论上讲,在任何其他事件被触发之前,我应该首先看到"新会话"事件.但在一些访问中,我没有看到"新会议"事件,这意味着它在某些情况下没有被解雇.
以下代码有什么问题?
$(function(){
var currentLocation = window.location.hostname;
var lastLocation = document.referrer;
if (lastLocation.indexOf(currentLocation) > -1) {
} else {
mixpanel.track("New Session", {});
}
mixpanel.track("Page View", {});
});
Run Code Online (Sandbox Code Playgroud) 我有一个带有parent_id和date属性的事件模型:
Event.rb
has_many :children, :class_name => "Event"
belongs_to :parent, :class_name => "Event"
Run Code Online (Sandbox Code Playgroud)
我没有问题event.parent或event.children.儿童事件本身从未有过孩子.
我正在尝试为此模型添加一个范围,以便我可以为每个父项返回最近的日期.就像是:
scope :future, -> {
where("date > ?", Date.today)
}
scope :closest, -> {
group('"parent_id"').having('date = MAX(date)')
}
Event.future.closest ==> returns the closest child event from every parent
Run Code Online (Sandbox Code Playgroud)
但上述:closest范围是每个父母返回一个以上的孩子.
javascript ×3
activerecord ×2
devise ×2
ajax ×1
clipboard.js ×1
forms ×1
heroku ×1
kaminari ×1
mixpanel ×1
pagination ×1
redis ×1
resque ×1
shopify ×1