Tag: ruby on rails 3

Rails:db / schema.rb中的差异 – null:false:created_at / updated_at列

有人知道为什么每当我在生产环境中运行rake db:migrate时,schema.rb文件都会被更改? 差异仅在所有模型表的created_at,update_at列上: – t.datetime “created_at” – t.datetime “updated_at” + t.datetime “created_at”, null: false + t.datetime “updated_at”, null: false 我知道这是它在生产数据库中找到的,但为什么它们被创建为null: false而不是在开发数据库中?

Rails后台工作者总是第一次失败,第二次工作

我有一个sidekiq工作者在保存对象后触发: class Post < ActiveRecord::Base attr_accessible :description, :name, :key after_save :process def process ProcessWorker.perform_async(id, key) if key.present? end def secure_url key.match(/(.*\/)+(.*$)/)[1] end def nonsecure_url key.gsub('https', 'http') end end 工人看起来如下(它尚未完成……只是测试): class ProcessWorker include Sidekiq::Worker def perform(id, key) post = Post.find(id) puts post.nonsecure_url end end 奇怪的是,每次工作人员触发时,它最初会因以下错误而失败: undefined method `gsub’ for nil:NilClass 但是,当工人稍后重试时 – 它总是成功。 它真的感觉好像什么东西没有初始化它应该……但我似乎无法追踪它。

Active Admin中的嵌套表单

我需要帮助! 我有2个模型用于调查: class Poll :destroy accepts_nested_attributes_for :poll_questions, :reject_if => lambda { |a| a[:text].blank? }, :allow_destroy => true end 问题的模型如下:(似乎这些关联是正确的) class PollQuestion :destroy accepts_nested_attributes_for :poll_answers, :reject_if => lambda { |a| a[:text].blank? }, :allow_destroy => true end 另外在活动管理员中: ActiveAdmin.register Poll do form do |f| f.inputs “Main poll” do f.input :title f.input :description end f.inputs do f.has_many :poll_questions […]

Heroku生产错误:PG ::错误:错误:关系“用户”已存在错误

部署到Heroku通常像拔牙一样? 我已经尝试了一个星期,错误后出错了。 我已经联系了Heroku支持,他们建议我尝试stackoverflow。 所以这就是它。 我刚刚按照指南将我的Devise升级到2.0架构: https : //github.com/plataformatec/devise/wiki/How-To :-Upgrade-to-Devise-2.0-migration-schema-style。 请参阅此处的代码库:www.github.com/apane/blogit_blog 我现在有以下错误(这应该是em的最后一个’) — create_table(:users) NOTICE: CREATE TABLE will create implicit sequence “users_id_seq1” for serial column “users.id” rake aborted! An error has occurred, this and all later migrations canceled: PG::Error: ERROR: relation “users” already exists : CREATE TABLE “users” (“id” serial primary key, “email” character varying(255) DEFAULT […]

在has_many上通过:关联优雅地设置连接表属性

在我的Rails 3.2应用程序中, Users可以创建Articles Collections 。 Collections和Articles由has_many through: collections_articles关系连接。 我希望在将Article添加到Collection时将user_id存储在collections_articles连接表中。 (因此该应用程序可以稍后显示谁将文章添加到集合中)。 有一种优雅的方式来做到这一点? class CollectionsArticle collection_id article_id user_id belongs_to :collection belongs_to :article belongs_to :user 当用户将文章添加到集合中时,我只想使用铲子,因此: my_collection.articles << my_article 无论如何(优雅地)同时将连接表的user_id设置为current_user ? 或者是在连接表本身中显式创建记录的最佳方法: CollectionsArticle.create(article: @article, collection: @collection, user: current_user) 谢谢!

按两个字段排序,一个是created_at,在Rails中

这是Rails 3中自定义,高效,复杂排序的后续问题 我想开发一种有效的轨道模型订购方法。 假设我在名为“popular”的字段中保存所有对象的评级。 如果我想按此评级排序,我会这样做: Model.order(‘popularity ASC’) 如何通过创建的偏斜来命令? 是否有办法将创建时间戳转换为整数值,然后按流行度排序 – created_at,以便旧对象的评级随着时间的推移而降低? IE之类的东西: Model.order(‘popularity-integerize(created_at) ASC’) 那么:我怎么能这样做,它是否有效?

如何更改Rails 3.0的默认日志路径?

由于我公司的内部软件部署过程,我必须更改我的铁路应用程序的默认日志路径:基本上我的rails应用程序最终位于只读位置,我需要在“为此制作”目录中编写的日志文件。 使用Rails 2.x,我们在FCGI脚本中添加了一些黑魔法,以便在prod上部署时强制使用。 主机: class Rails::Configuration def default_log_path File.join(ENV[‘SOME_ENVIRONMENT_VAR’], “var/output/logs/rails.log”) end end 但是,在Rails 2.3(它是一个模块)中,Configuration不再是一个类了,在我看来,不再有任何default_log_path了…

使用设计API进行自定义身份validation

所以我在这里有一个小巧的组合 Company has many Users User belongs to Company 用户通过设计进行身份validation管理 class User < ActiveRecord::Base belongs_to :company devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable 您可以以用户身份登录并创建所有属于公司的对象,而不是用户,例如: Text 。 ( company.texts ) 现在我使用acts_as_api gem创建了一个简单的API。 对于这个我只需要修改我的文本控制器,fe show动作。 class TextsController @text } end 这在网站上运行得很好。 问题是API。 我不想通过用户模型访问api时进行身份validation。 该公司确实有一个名为:hash的属性,我希望在API中使用Auth。 我不知道如何使用设计(或任何其他方法)来实现这一点。 所以默认情况下,设计希望用户登录,因为我的控制器中有load_and_authorize_resource ,这对于html响应是好的,但对于json响应则没有。 有任何想法吗? 谢谢你读这个。 如果不清楚,请发表评论!

没有内存错误,无法分配内存

我是Ruby On Rails的新手,但每次我犯了一个错误(例如在一个函数中),我的电脑(xubuntu 10.10)完全冻结了。 实际上除了等待我什么都做不了,我终于在5或10分钟后得到“无内存错误 – >无法分配内存”错误。 我使用rails 3和mongoDB。 我正在从一个有很多gem的现有项目中发展,有什么后果吗? 谢谢 !

ActiveModel :: MissingAttributeError:无法写入未知属性`user_id`

我正在尝试实施“评论”function,作为我正在建设的项目的一部分。 在本课程的早些时候,我们创建了一个评论表,并让Faker gem生成虚假评论。 我的说明如下: 注释必须与用户关联,因此将user_id外键添加到comments表中。 记得也要添加一个索引; 更新用户模型,以便您可以调用user.comments和Comment模型,以便您可以调用comment.user; 运行db:reset时,修改seeds.rb文件以创建有效注释; 最初我试图运行我的rails generate命令,但一直遇到这个错误: ▶ rake db:migrate == 20150508143445 CreateComments: migrating =================================== — create_table(:comments) rake aborted! StandardError: An error has occurred, this and all later migrations canceled: SQLite3::SQLException: table “comments” already exists: CREATE TABLE “comments” (“id” INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, “description” text, “created_at” datetime NOT NULL, “updated_at” […]