可能听起来像一个简单的问题,但我很难过.
我创建了一个基本上包含生成器的gem.
它包含以下结构:
lib
- generators
- my_generator
my_generator_generator.rb (see below)
- templates
my_template_files...
- my_generator.rb (empty file)
test
-test files
GemFile
etc..
Run Code Online (Sandbox Code Playgroud)
但是当我将这个Gem添加到我的gem文件并运行rails g时,它没有列出.我需要做任何其他配置吗?
我的发电机大致看起来像这样......
class MyGeneratorGenerator < Rails::Generators::NamedBase
source_root File.expand_path('../templates', __FILE__)
generator code....
end
Run Code Online (Sandbox Code Playgroud)
奇怪的是,它适用于Cygwin,但不适用于Ubuntu ......
我试图让一个before(:each)
块运行所有规格除外 type: :feature
.
我能让它工作的唯一方法是剪切和粘贴,并为每种类型分别配置块.(:type => :model
,:type => :service
等)
投机/ rails_helper.rb
# To speed up tests, stub all Paperclip saving and reading to/from S3
config.before(:each, :type => :model) do
allow_any_instance_of(Paperclip::Attachment).to receive(:save).and_return(true)
end
Run Code Online (Sandbox Code Playgroud)
有更干的方法吗?
我在升级到rails 4.2.1时遇到了弃用错误, Modifying already cached Relation. The cache will be reset. Use a cloned Relation to prevent this warning.
我正在尝试运行的操作获得已登录的月份用户数.
我的测试很简单:
get :page
expect(response).to be_success
Run Code Online (Sandbox Code Playgroud)
控制器动作:
def page
@months = {}
(0..11).each do |month|
@months[month] = User.group(:usergroup).number_first_logged_in(Date.new(Date.today.year,month+1, 1))
end
end
Run Code Online (Sandbox Code Playgroud)
用户模型
class Model < ActiveRecord::Base
...
def number_first_logged_in(month)
where(first_logged_in_at: month.beginning_of_month..month.end_of_month).count
end
end
Run Code Online (Sandbox Code Playgroud)
我意识到我运行了几乎相同的查询12次,但参数不同.当用户未分组时,此方法在别处使用.如何按照弃用警告中的建议"克隆"关系?
我不想简单地忽略这一点,因为它在运行测试时填满了我的屏幕,这不是很有帮助
ruby-on-rails rails-activerecord rails-4-2-1 adequate-record
我有以下设置:
class UsersController < ApplicationController
...
end
class Admin::BaseController < ApplicationController
...
end
class Admin::UsersController < Admin::BaseController
...
end
Run Code Online (Sandbox Code Playgroud)
同样的规格:
#spec/controllers/users_controller_spec.rb:
describe UsersController do
...
end
#spec/controllers/admin/users_controller_spec.rb
describe Admin::UsersController do
...
end
Run Code Online (Sandbox Code Playgroud)
所有规格在独立运行时运行良好,但是当我一起运行时,我收到警告:
toplevel constant UsersController referenced by Admin::UsersController
Run Code Online (Sandbox Code Playgroud)
管理员控制器的规格没有通过.
路线文件:
...
resources :users
namespace "admin" do
resources :users
end
Run Code Online (Sandbox Code Playgroud)
...
Rails 4,Rspec 2.14
我可以不为不同命名空间中的控制器使用相同的名称吗?
在红宝石......
我有一个由外部进程创建的IO对象,我需要从中获取文件名.但是我似乎只能得到文件描述符(3),这对我来说不是很有用.
有没有办法从这个对象获取文件名甚至获取文件对象?
我从通知程序获取IO对象.所以这可能是一种获取文件路径的方法?
我写了一些我已经使用 Gemcutter 和存储在 github 上的源代码发布到 rubygems 的 gem。
我有一个问题,我需要创建一个不能开源的 gem,它也不能提供给社区,而只能提供给我的团队成员。
我知道我可以在本地存储宝石并将它们定位到我的 Gemfile 中,但是我希望能够做到
rake version:bump
rake release
Run Code Online (Sandbox Code Playgroud)
或类似。这会影响版本并将其推送到我的 gem 服务器,并且仍然保留旧的 gem,以便人们可以安装它的旧版本。
看起来它应该相当简单。我只是想念怎么做
我正试图从一个表格中获取特定格式的调查数据.但是我的所有尝试似乎都是因为DB上的连接太多/太重而无法提交数据库.
我的数据如下:
id, user, question_id, answer_id,
1, 1, 1, 1
3, 1, 3, 15
4, 2, 1, 2
5, 2, 2, 12
6, 2, 3, 20
Run Code Online (Sandbox Code Playgroud)
大约有250,000行,每个用户大约有30行.我希望结果看起来像:
user0, q1, q2, q3
1, 1, NULL, 15
2, 2, 12, 20
Run Code Online (Sandbox Code Playgroud)
这样每个用户在结果中都有一行,每个用户每个答案都有一个单独的列.
我正在使用Postgres,但任何SQL语言的答案都会受到赞赏,因为我可以翻译成Postgres.
编辑:我还需要能够处理不回答问题的用户,即上面的示例q2用户1.
我需要一种方法来根据我的MVC应用程序中的用户属性,在生成URL时以编程方式选择选择哪个RoutePrefix
我有一个MVC 4应用程序(使用AttributeRouting NuGet包)
由于托管环境的要求,我必须为我的许多操作设置两条路由,以便托管环境可以具有不同的访问权限.
我通过装饰我的控制器来解决这个问题[RoutePrefix("full")]
[RoutePrefix("lite)]
.允许通过/ full/{action}和/ lite/{action}访问每个操作方法.
这非常有效.
[RoutePrefix("full")]
[RoutePrefix("lite")]
public class ResultsController : BaseController
{
// Can be accessed via /full/results/your-results and /lite/results/your-results and
[Route("results/your-results")]
public async Task<ActionResult> All()
{
}
}
Run Code Online (Sandbox Code Playgroud)
但是,每个用户只应在其URL中使用full或lite,这取决于该用户的某些属性.
显然,当我使用RedirectToAction()
或@Html.ActionLink()
它只会选择第一个可用的路线,并不会保留"正确"的前缀.
我想我可以覆盖该RedirectToAction()
方法以及添加我自己的@Html.ActionLink()
方法版本.
这将有效,但它将涉及一些讨厌的代码,我生成URL,因为我得到的是一个表示动作和控制器的字符串,但不是反映的类型.也可能有路由属性,例如在我的示例中,所以我将不得不复制许多内置代码的MVC.
对于我想解决的问题,有没有更好的解决方案?
我对我的github 52周参与图表感到困惑.我在那里的大多数项目只有一位作者(我).然而,52周参与的"由所有者提交"是零,即使我的所有提交都是由我提交的.
我的页面:https://github.com/yule
我正在尝试使用form_for
和制作嵌套表单fields_for
.经过大量的研究和成功,不再在我的项目上工作了.我只是想重新创建一个railscast,看看我做错了什么.
我正在尝试重新创建在http://railscasts.com/episodes/196-nested-model-form-part-1上找到的示例,因为代码存在,所以不应该那么难,但我可以'设法从调查中创建问题.这是我的代码,直到现在:
rails new surveysays
rails g scaffold survey name:string
rake db:migrate
rails g scaffold question survey_id:integer content:text
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
我正在尝试以完全相同的视频序列进行操作.我的问题模型:
class Question < ActiveRecord::Base
belongs_to :survey
end
Run Code Online (Sandbox Code Playgroud)
我的调查模型:
class Survey < ActiveRecord::Base
has_many :questions, dependent: :destroy
accepts_nested_attributes_for :questions
end
Run Code Online (Sandbox Code Playgroud)
我的调查表格带有嵌套问题字段:
<%= form_for(@survey) do |f| %>
...
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<%= f.fields_for :questions do |builder| %>
<p>
<%= builder.label :content, "Question" %><br/>
<%= builder.text_area :content, :row …
Run Code Online (Sandbox Code Playgroud) 我有一个查询,工作正常:
ModelName.where('true')
Run Code Online (Sandbox Code Playgroud)
我可以将其与其他AR调用链接,例如where,order等.但是当我使用时:
ModelName.all
Run Code Online (Sandbox Code Playgroud)
我收到"相同"的响应,但不能链接到哪里或命令它,因为它是一个数组而不是一个AR集合.虽然我没有使用第一种方法的实用问题,但似乎有点难看/不必要.有没有一种更干净的方式可以这样做.to_active_record_collection或什么?
当我输入:sudo rake db:migrate
我有:
rake aborted !
/home/trace/config/initializers/session_store.rb:3: syntax error, unexpected ':', expecting $end...sion_store :cookie_store, key: '_trace_session'
Run Code Online (Sandbox Code Playgroud)
请注意,我的ruby版本是:
ruby -v: 1.9.2p312
Run Code Online (Sandbox Code Playgroud)
而在我的bashrc我有:
rvm use 1.9.2-final@rails310.
Run Code Online (Sandbox Code Playgroud)
session_store.rb:
# Be sure to restart your server when you modify this file.
Trace::Application.config.session_store :cookie_store, key: '_trace_session'
Run Code Online (Sandbox Code Playgroud)
提前致谢
ruby ×3
rspec ×2
rubygems ×2
activerecord ×1
asp.net-mvc ×1
c# ×1
commit ×1
controller ×1
crosstab ×1
generator ×1
git ×1
github ×1
io ×1
nested-forms ×1
postgresql ×1
rails-4-2-1 ×1
rake ×1
rvm ×1
sql ×1