Tag: ruby on rails

Rails 3无法访问服务器上的日志文件

我正在将我的Web应用程序部署到我的服务器,一切正常,但我找不到办法摆脱下面的以下错误消息。 在部署之前,我在我的日志中有一个开发和生产.rb文件,但是当推送到服务器时,那里什么都没有,我无法创建它。 我已经寻找其他解决方案,但到目前为止没有任何工作,我该如何解决这个错误? Rails Error: Unable to access log file. Please ensure that /var/www/websites/public/appname/releases/20120608236602/log/production.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.

在另一个关联类中返回方法的结果时,结果不正确

我有2个对象, User和Goal ( User has_many :goals和Goal belongs_to :user ) 在我的Goal模型中,我有…… def total_goal_xp total_activities_sum = self.activities.sum(:quantity) return (total_activities_sum*xp_value) end 在我的User show.html.erb文件中,我使用Google图表创建饼图并从我的Goal模型中提取数据。 出于某种原因,我可以访问goal表中的部分,例如:name但它不会让我从上面包含的Goal方法返回结果。 这是我的users_controller文件…… def show @goals = current_user.goals @activities = current_user.activities.reverse end 更新:我现在已经将show.html.erb文件中的行更改为… 现在它显示饼图,但不是按每个goal_id的单个总xp向下打破xp,它只需要获取所有目标的总xp并将该值分配给每个goal_id。 我有6个目标,当我将鼠标hover在图表上时,每个目标有16.7%的图表和相同的值xp。 第二次更新:我已将饼图移动到名为dashboard.html.erb的文件中的目标视图文件夹中,并在目标控制器中创建了一个名为仪表板的方法。 我已经将饼图的代码行改为…… 这仍然给我与上面的线完全相同的结果。 它需要总价值并将其分配给每个目标,因此它们被平分。 有谁知道我的总和有什么问题,为什么不计算每个目标的结果而不是所有目标? 第三次更新:我已将仪表板移回用户视图文件夹,并在我的用户控制器中创建了一个名为dashboard的方法。 我已将仪表板中的代码行更改为… 基本上我已经切换了sum和order的顺序,但现在它给了我以下SQL错误消息…… SQLite3::SQLException: wrong number of arguments to function SUM(): SELECT SUM() FROM “goals” WHERE […]

BigQuery联合数据源的API配置

我有以下配置适用于将一堆文件加载到BigQuery中: config= { ‘configuration’=> { ‘load’=> { ‘sourceUris’=> ‘gs://my_bucket/my_files_*’, ‘schema’=> { ‘fields’=> fields_array }, ‘schemaUpdateOptions’ => [{ ‘ALLOW_FIELD_ADDITION’=> true}], ‘destinationTable’=> { ‘projectId’=> ‘my_project’, ‘datasetId’=> ‘my_dataset’, ‘tableId’=> ‘my_table’ }, ‘sourceFormat’ => ‘NEWLINE_DELIMITED_JSON’, ‘createDisposition’ => ‘CREATE_IF_NEEDED’, ‘writeDisposition’ => ‘WRITE_TRUNCATE’, ‘maxBadRecords’=> 0, } }, } 然后使用以下client进行预初始化来执行此操作: result = client.execute( api_method: big_query.jobs.insert, parameters: { projectId: ‘my_project’, datasetId: ‘my_dataset’ }, […]

Collection_select不保存

我正在尝试实现一个集合选择来创建我的模型组和用户之间的关联(join table:groups_user)。 但是当我使用collection_select时,这种关联并没有保存。 我完全不知道会出现什么问题 我的代码: 观点: &我的控制器(组): def group_params params.require(:group).permit(:name, :user_ids) end 仅供参考,我有一个动作来单独提交协会,它的工作完美! 但是,当我尝试实施集合来集体选择时,是行不通的

Link_to rails嵌套表单编辑

我刚刚按照以下教程进行了很好的工作。 http://www.communityguides.eu/articles/6 然而,有一件事他对我来说很难,那就是编辑。 我打电话给我的link_to编辑了 然后,它带我到一个错误的页面,不知道为什么。 NoMethodError in Comments#edit Showing /home/jean/rail/voyxe/app/views/comments/_form.html.erb where line #1 raised: undefined method `comment_path’ for #<#:0xb65924f8> Extracted source (around line #1): 1: 2: 3: 4: prohibited this comment from being saved: 现在这里是评论编辑中的表格 prohibited this comment from being saved: 这是控制器文章控制器显示 @article = Article.find(params[:id]) @comments = @article.comments.find(:all, :order => ‘created_at DESC’) 评论控制器编辑 def edit […]

Rails- Heroku – rake流产! 请安装postgresql适配器:gem install activerecord-postgresql-adapter

对不起,我是Ruby on Rails的新手,我正在学习一个教程,但是我在尝试将数据库推送到heroku时遇到了麻烦。 我已经在我的Linux中安装了postgresql,尝试了很多教程。 当我输入heroku rake db:migrate ,我收到以下错误消息: 弃用警告:您在供应商/插件中拥有Rails 2.3风格的插件! 在Rails 4.0中将删除对这些>插件的支持。 移出它们并将它们捆绑在Gemfile中,或者>将它们作为lib / myplugin / *和config / initializers / myplugin.rb折叠到您的应用程序中。 有关详细信息,请参阅>发行说明: http : //weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2- >已发布。 (从/ app / Rakefile:7调用)rake aborted! 请安装postgresql适配器: gem install activerecord-postgresql-adapter (pg>不是捆绑包的一部分。将其添加到Gemfile。) 任务:TOP => db:migrate => db:load_config(通过使用–trace运行任务来查看完整跟踪) 我的Gemfile是这样的: source ‘https://rubygems.org’ gem ‘rails’, ‘3.2.2’ gem ‘sqlite3’ group :production do gem ‘pg’ end […]

如何在ActiveRecord中找到除原始记录之外的重复记录

使用Rails 4,Ruby 2,MySql 我想在我的数据库中找到所有记录的重复记录 – 但不是原始记录本身。 这样我就可以在每个记录上更新update_attributes(:duplicate => true) ,并保留原始未记录为重复的记录。 你可以说我正在寻找与Uniq相反的东西*我不想要Uniq值,我希望所有的值在事后都不是uniq。 我不希望所有具有重复的值都包含原始值。 我不介意使用纯SQL或Ruby,但我更喜欢使用活动记录来保持Railsy。 假设该表被称为“Leads”,我们正在寻找那些字段“telephone_number”相同的表。 我会单独留下记录1并将2,3和4标记为duplicate = true。 *如果我想要与Uniq相反,我可以做一些类似于查找在Ruby哈希中重复的内容 b = a.group_by { |h| h[:telephone_number] }.values.select { |a| a.size > 1 }.flatten 但这就是所有的记录,我想要所有重复的记录,而不是我正在比较它的原始记录。

使用find_by方法检索多个记录

以下方法适用于通过电子邮件发送令牌链接的用户并对其进行身份validation。 def login inv = Invitation.find_by(email: params[:email]) if inv && inv.authenticated?(:invitation, params[:id]) @organization = inv.organization unless @organization.nil? render ‘profiles/show’ and return else flash[:danger] = “Error” redirect_to root_path end else flash[:danger] = “Invalid link” redirect_to root_path end end 然而,这种方法似乎假设一个人( inv )只能在Invitation数据库中存在一次。 情况并非如此,同一个人/电子邮件地址可以在数据库中拥有多条记录。 因此,我需要重写方法来解决这种情况。 我怎样才能做到这一点? 我可以在下面第2行添加.each并使用.each吗? def login inv = Invitation.find_by(email: params[:email]).all if inv inv.each do |person| […]

允许用户在rails 3中删除自己的注释

对于每个post,都有后续评论。 以下是Postcomment的模型: class Postcomment < ActiveRecord::Base attr_accessible :comment_content belongs_to :user belongs_to :post end 和邮政模型 class Post < ActiveRecord::Base attr_accessible :content, :image, :comment_content belongs_to :user has_many :postcomments, dependent: :destroy end 我想允许用户删除自己的post。 这就是我在视图中已有的内容 _postcomment.html.erb 如何更改以下代码以允许用户删除评论? Sessions帮助器中的current_user方法 def current_user=(user) @current_user = user end def current_user @current_user ||= User.find_by_remember_token(cookies[:remember_token]) end def current_user?(user) user == current_user end 这是Postcomments表 create_table “postcomments”, […]

Rails 5需要应用程序控制器中的初始化程序

我的应用程序需要在初始化时进行一些预计算。 我有一个Ruby文件config/initializers/start_1.rb ,在这个文件中,我require /config/lib/init_module.rb的通用模块,如下所示: require ‘./lib/init_module.rb’ Init::Class1.new Init::Class1.new 在/config/lib/init_module.rb文件中,我为每个新对象增加一个值,如下所示: module Init class Class1 @@local = 0 def initialize @@local += 1 end def self.local @@local end end end 在我的应用程序控制器中,对于来自客户端的每个请求,我想使用此预先计算的值。 如果我在我的应用程序控制器中require /config/lib/init_module.rb ,它将不会给我任何关于本地值的信息(= 0 ),因为每个请求都会创建一个新实例。 (实际上,我不明白为什么@@local是一个类变量。) 如果我在我的应用程序控制器中require /config/initializers/start_1.rb ,它将为每个请求运行初始化程序,这将导致巨大的开销。 我很感激您对我的问题的建议。