小编mui*_*ine的帖子

无法使用cache_classes = true为Concern(ActiveSupport :: Concern :: MultipleIncludedBlocks)定义多个"包含"块

我有一个在Rails 4.1.1应用程序中使用的模块

module A
   extend ActiveSupport::Concern
   included do
     #Some code
   end
end
Run Code Online (Sandbox Code Playgroud)

它包含在一个类中

class Some
  include A
end
Run Code Online (Sandbox Code Playgroud)

这与伟大工程cache_classes=trueapplication.rb.现在,如果我关闭类的缓存,我会Cannot define multiple 'included' blocks for a Concern (ActiveSupport::Concern::MultipleIncludedBlocks)在启动服务器时获得异常upson.

由于重新加载类是由Rails完成的,应该如何处理这样的问题?

ruby-on-rails activesupport

32
推荐指数
2
解决办法
1万
查看次数

ActiveAdmin操作

有没有办法在ActiveAdmin的模型索引页面中指定允许的操作,例如:

index do
  actions :edit
end

index do
  actions only: :edit
end
Run Code Online (Sandbox Code Playgroud)

不工作.什么是正确的语法?

赞赏.

bundle show activeadmin
/home/muichkine/.rvm/gems/ruby-2.1.2/bundler/gems/active_admin-9cfc45330e5a
Run Code Online (Sandbox Code Playgroud)

rubygems ruby-on-rails activeadmin ruby-on-rails-4

19
推荐指数
4
解决办法
1万
查看次数

别名路线的名称

我需要通过多个名称访问一个路径.在我routes.rb做的

get '/route' => 'controller#edit', :as => 'name_a'
get '/route' => 'controller#edit', :as => 'name_b'
Run Code Online (Sandbox Code Playgroud)

这很好用,但无需加载路由表.根据我对文档的理解,:as在调用时定义一个辅助方法.

所以我去了我的ApplicationController并补充说

alias_method :name_b, :name_a
Run Code Online (Sandbox Code Playgroud)

我删除了第二行 routes.rb

但那失败了 Uncaught exception: undefined method name_a for class ApplicationController

有没有适当的方法为一条路径有两个名字?

=================编辑====================详细说明:

我使用设计的宝石来管理会议,登记,锁定,2种用户等,我们称他们为AdminGuest.宝石很好,但它要求确定的路线名称行为正常.

就我而言,就设计而言,只有注册过程不同,所以我试图构建一个如下所示的结构:

app
  controllers
    users
        admin
            registration_controller.rb
        guest
            registration_controller.rb
        session_controller.rb
        password_controller.rb
        registration_controller.rb
Run Code Online (Sandbox Code Playgroud)

AdminGuest从上述registration_controller其继承的从设计控制器继承.

现在,为了正常工作,Devise需要例如名称guest_user_password以及admin_user_password创建或删除密码检索.在我的情况下,两者都在相同的路径下,所以我希望两个名称重定向到相同的"用户/密码"控制器.

更重要的是,这就是我真正想要的原因.在重定向到密码检索控制器时,我的观点是不应该关心它是否正在处理AdminGuest路由.两者都是用户,所以我想用user_password它们.

因此我的问题.:)

还要注意,正如我所写,事情有效.我只想尝试写出"最优雅的方式".

routes ruby-on-rails devise

11
推荐指数
1
解决办法
2281
查看次数

Python 快速 DataFrame 串联

我编写了一段代码,将 DataFrame 的各个部分连接到同一个 DataFrame,以便根据特定列规范行的出现。

import random

def normalize(data, expectation):
    """Normalize data by duplicating existing rows"""

    counts = data[expectation].value_counts()
    max_count = int(counts.max())

    for tag, group in data.groupby(expectation, sort=False):
        array = pandas.DataFrame(columns=data.columns.values)

        i = 0
        while i < (max_count // int(counts[tag])):
            array = pandas.concat([array, group])
            i += 1

        i = max_count % counts[tag]
        if i > 0:
            array = pandas.concat([array, group.ix[random.sample(group.index, i)]])

        data = pandas.concat([data, array])

    return data
Run Code Online (Sandbox Code Playgroud)

这速度慢得令人难以置信。有没有一种方法可以快速连接 DataFrame 而无需创建它的副本?

python pandas

6
推荐指数
1
解决办法
7860
查看次数

Ruby模块前置与派生

有什么区别:

module Mod   
   def here
     puts 'child'
   end    
end

class A
  prepend Mod
  def here
    puts 'parent'
  end
end
Run Code Online (Sandbox Code Playgroud)

class A
   def here
     puts 'parent'
   end
end

class B < A
  def here
    puts 'child'
  end
end
Run Code Online (Sandbox Code Playgroud)

或者另一种说法:派生一个类与预先设置孩子代码的模块一样?

ruby

5
推荐指数
1
解决办法
1616
查看次数

没有模型的Carrierwave临时文件

我需要能够将文件附加到邮件(使用Mailer)以获取最近上传的文件,该文件未链接到任何模型.

在上传表单的代码中:

<%= form_for(:mail, :url => {:action => 'send_mail'}, :html => {:multipart => true}) do |f| %>
<table summary="send_table">
  <tr>
    <th>Attachment</th>
    <td><%= f.file_field(:attachment) %><a id="attachment"></a></td>
  </tr>
</table>

<%= submit_tag "Send!" %>
Run Code Online (Sandbox Code Playgroud)

现在,我在send_mail操作中正在做的事情是这样的:

MyMailer.send_mail(params[:mail][:attachment]).deliver 
Run Code Online (Sandbox Code Playgroud)

params [:mail] [:attachment]是使用表单上传的临时文件的路径.怎么能这样做?

这也意味着另一个问题:一旦发送邮件,我应该从temp手动删除文件吗?如果有,怎么样?

ruby-on-rails carrierwave

4
推荐指数
1
解决办法
3034
查看次数

覆盖模型属性

这就是事情.我有一个国家模型,有两列"语言"和"default_language".因此,例如,对于瑞士,这些列分别设置为"de,fr,it"和"de".

现在,如果我做Country.languages我得到"de,fr,it"字符串.我怎么能覆盖这个,所以当我得到Country.languages我得到一个数组["de","fr","it"]?

当然我可以创建一个函数def available_languages,但是,我仍然不希望语言公开.

attributes ruby-on-rails-3

1
推荐指数
1
解决办法
720
查看次数