小编Mun*_*PhD的帖子

来自Google使用OpenID的友好名称?

当我与Google OpenID提供商进行乒乓球比赛时,我无法获得友好的名字/昵称/用户名(无论你想叫什么).

我得到的东西看起来很糟糕,如下所示:

www.google.com/accounts/o8/id?id=AItOawmtAnQvSXGhRTkAHZWyxi4L4EKa7xoTT1dk  
Run Code Online (Sandbox Code Playgroud)

而不是喜欢的东西

JohnDoe
Run Code Online (Sandbox Code Playgroud)

什么是以友好的方式从Google获取用户名称的协议,比如myopenid呢?

**我正在使用DotNetOpenAuth*

openid dotnetopenauth

17
推荐指数
3
解决办法
4282
查看次数

你怎么处理恶劣的代码?

当你被分配到那些令人厌恶和过时的代码时,你会怎么做?这几乎是不可理解的?

例如:硬件接口代码,混合逻辑,AND用户界面代码,ALL在同一个功能中?

我们一直看到不好的代码,但你实际上对它做了什么?

  • 你试着重构它吗?
  • 如果不是的话,试着把它做成OO吗?
  • 或者您是否尝试了解它,进行必要的更改并继续前进?

refactoring

16
推荐指数
4
解决办法
1440
查看次数

Mocha Mock进行另一项测试

我一直在遵循15个TDD步骤来创建Rails应用程序指南 - 但是遇到了一个我似乎无法解决的问题.对于WordsController的功能测试,我有以下代码:

class WordsControllerTest < ActionController::TestCase

  test "should get learn" do
    get 'learn'
    assert_response :success
  end

  test "learn passes a random word" do    
    some_word = Word.new
    Word.expects(:random).returns(some_word)
    get 'learn'
    assert_equal some_word, assigns('word')
  end
end
Run Code Online (Sandbox Code Playgroud)

在Word类中,我有以下代码:

class Word < ActiveRecord::Base
  def self.random
    all = Word.find :all
    all[rand(all.size)]
  end
end
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,我遇到以下错误(为简洁起见缩短):

1) Failure: unexpected invocation: Word(...).random() satisfied expectations:
- expected exactly once, already invoked once: Word(...).random()
Run Code Online (Sandbox Code Playgroud)

我已经尝试过更改测试顺序以及其他许多内容,但是我一次又一次地继续接收相同的测试失败 - 已经调用了Word.random().

我正在运行Rails 3.0 beta 4和Mocha 0.9.8.我一直在努力寻找解决问题的方法,但我似乎无法找到它.我是Ruby/Rails的新手,所以我对语言和框架并不熟悉.

提前致谢!

ruby functional-testing mocha.js

16
推荐指数
2
解决办法
3669
查看次数

上帝控制者 - 如何预防他们?

在我一直在研究的一些MVC项目中,显而易见的是,有一些有问题的控制器已经有机地成长为上帝类 - 如果你愿意的话,每个人都在他们自己的领域.

这个问题可能更多的是"什么在哪里",但我认为这是一个关于SRP(单一责任原则),DRY(不要重复自己),保持简洁,"敏捷"的重要问题 - 而且我没有足够的经验(有这种模式和一般设计)对此有所了解.

在一个项目中,我们有一个NutritionController.随着时间的推移,它已经成长为包含这些动作(许多动作都有各自的GET,POST和DELETE方法):

Index (home controller)
ViewFoodItem
AddFoodItem
EditFoodItem
DeleteFoodItem
ViewNutritionSummary
SearchFoodItem
AddToFavorites
RemoveFromFavorites
ViewFavorites
Run Code Online (Sandbox Code Playgroud)

然后我们有一个ExerciseController,它将包含许多类似的操作,例如搜索和收藏夹操作.这些应该重构到他们自己的控制器中,以便它是这样的吗?

SearchController {
    SearchExercise
    SearchNutrition
    //... etc
}

FavoritesController {
    ViewNutritionFavorites
    AddToNutritionFavorites
    AddToExerciseFavorites
    EditNutritionFavorites
    EditExerciseFavorites
    //... etc
}
Run Code Online (Sandbox Code Playgroud)

在我看来,如果你将它们分解为单独的控制器,你将在某种程度上增加一个令人难以置信的大依赖性来处理你需要的信息.或者你将拥有一个非常难以处理的完全通用的处理应用程序,因为你必须跳过这么多的箍来获得你想要的效果(在M,V或C级别).

我想错了吗?例如,我应该有一个通用的收藏夹对象,然后让控制器决定将它扔到哪个视图?

*很抱歉拼写出缩略语 - 我这样做是为了防止其他人遇到这个问题并且对这些东西是什么一无所知

编辑: 我执行的所有逻辑几乎都在服务层中处理.例如,控制器将'new'FoodItem发送给服务.如果它已经存在,或者它有错误,服务会将其冒泡回控制器.

model-view-controller asp.net-mvc design-patterns god-object

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

将SQL查询转换为ActiveRecord Relation

如何将以下SQL查询转换为ActiveRecord关系,以便我可以使用范围扩展它?

WITH joined_table AS (
    SELECT workout_sets.weight AS weight, 
        workouts.user_id AS user_id, 
        workouts.id AS workout_id, 
        workout_sets.id AS workout_set_id,
        workout_exercises.exercise_id AS exercise_id
    FROM workouts 
    INNER JOIN workout_exercises ON workout_exercises.workout_id = workouts.id 
    INNER JOIN workout_sets ON workout_sets.workout_exercise_id = workout_exercises.id       
    ORDER BY workout_sets.weight DESC
    ),

sub_query AS (
    SELECT p.user_id, MAX(weight) as weight
        FROM joined_table p
            GROUP BY p.user_id
),

result_set AS (
    SELECT MAX(x.workout_id) AS workout_id, x.user_id, x.weight, x.workout_set_id, x.exercise_id
    FROM joined_table x
    JOIN sub_query y 
    ON y.user_id = x.user_id AND y.weight …
Run Code Online (Sandbox Code Playgroud)

sql activerecord ruby-on-rails active-relation ruby-on-rails-4

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

RoR成就系统 - 多态关联和设计问题

我正试图在Ruby on Rails中设计一个成就系统,并且遇到了我的设计/代码.

试图使用多态关联:

class Achievement < ActiveRecord::Base
  belongs_to :achievable, :polymorphic => true
end

class WeightAchievement < ActiveRecord::Base
  has_one :achievement, :as => :achievable
end
Run Code Online (Sandbox Code Playgroud)

迁移:

class CreateAchievements < ActiveRecord::Migration
... #code
    create_table :achievements do |t|
      t.string :name
      t.text :description
      t.references :achievable, :polymorphic => true

      t.timestamps
    end

     create_table :weight_achievements do |t|
      t.integer :weight_required
      t.references :exercises, :null => false

      t.timestamps
    end
 ... #code
end
Run Code Online (Sandbox Code Playgroud)

然后,当我尝试下面的抛弃单元测试时,它会失败,因为它表示该成就为空.

test "parent achievement exists" do
   weightAchievement = WeightAchievement.find(1)
   achievement = weightAchievement.achievement 

    assert_not_nil achievement
    assert_equal 500, weightAchievement.weight_required
    assert_equal …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails achievements polymorphic-associations

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

Rails查看帮助程序不将HTML插入页面

我在我的Rails(3.0)应用程序中使用自定义帮助器方法输出所需的html时遇到问题.

我在部分视图中有以下调用:_label.html.erb

<% display_resource "Diamond", @resource.diamond %>
Run Code Online (Sandbox Code Playgroud)

在resource_helper.rb文件中:

module ResourceHelper
   def display_resource(display_name, value)
      "<tr><td>#{display_name} </td><td>#{value.to_s}%</td></tr>" if value > 0
   end
end
Run Code Online (Sandbox Code Playgroud)

预期的输出是:

<tr>
  <td>Diamond</td>
  <td>15%</td>
<tr>
Run Code Online (Sandbox Code Playgroud)

*授予,没有格式化,15是任意的

如果我在执行方法调用时使用<%= ...%>,它将正确输出字符串,但它不会是html(即我会看到"<tr><td>Diamond </td><td>15%</td></tr>"与"Diamond 15%"相反)

我做错了什么?

html-helper ruby-on-rails

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

如何在Rails中序列化嵌套模型?

我很难搞清楚如何在rails中序列化模型的嵌套属性.我有一个RecipeTemplate,它将已存在的Recipe存储在它的template_data属性中.Recipe有两个级别的嵌套属性.

这是在rails 3.1.0.rc4上

class RecipeTemplate < ActiveRecord::Base
  serialize :template_data, Recipe
 ...
end

class Recipe < ActiveRecord::Base
  has_many :ingredients
  accepts_nested_attributes_for :ingredients
 ...
end
Run Code Online (Sandbox Code Playgroud)

Recipe中的成分也有嵌套属性(SubIngredients).

如果我使用如下对象设置template_data:

Recipe.includes(:ingredients => [:sub_ingredients]).find(1)
Run Code Online (Sandbox Code Playgroud)

我会得到一个TypeError"无法转储匿名类Class",这是有道理的,因为它不知道如何序列化Ingredients或SubIngredients.

如何序列化模型中的嵌套属性,以便您可以使用:

 serialize :template_data, Recipe
Run Code Online (Sandbox Code Playgroud)

或者我是否必须以其他方式序列化数据并自行执行类型安全检查?

在此先感谢您的帮助

serialization activerecord ruby-on-rails nested-attributes

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

SerializationException与自定义GenericIdentiy?

我正在尝试实现我自己的GenericIdentity实现,但在尝试加载视图时我一直收到以下错误(我正在使用asp.net MVC):

 System.Runtime.Serialization.SerializationException was unhandled 
 by user code Message="Type is not resolved for member 
 'OpenIDExtendedIdentity,Training.Web, Version=1.0.0.0, 
 Culture=neutral, PublicKeyToken=null'."
      Source="WebDev.WebHost"
Run Code Online (Sandbox Code Playgroud)

我最后得到了以下课程:

[Serializable]
    public class OpenIDExtendedIdentity : GenericIdentity {
        private string _nickName;
        private int _userId;

        public OpenIDExtendedIdentity(String name, string nickName, int userId)
            : base(name, "OpenID") {
            _nickName = nickName;
            _userId = userId;
        }
        public string NickName {
            get { return _nickName; }
        }

        public  int UserID {
            get { return _userId; }
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我的Global.asax中,我将cookie的序列化值读入内存流,然后使用它来创建我的OpenIDExtendedIdentity对象.经过各种各样的尝试后,我最终尝试了这种解决方案.它正常工作,直到它尝试渲染视图.

我基本上试图实现的是能够执行以下操作(使用asp.net中的默认角色管理器):

User.Identity.UserID
User.Identity.NickName
... etc.
Run Code Online (Sandbox Code Playgroud)

我已经列出了一些我试图解决这个问题的资料.有些人报告了Cassini错误,但似乎其他人已经成功实现了这种类型的自定义功能 - …

asp.net-mvc serialization

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

.Net将数字从一种文化转换为另一种文化

在.Net(VB更具体,但这并不重要),有没有办法通过该数字的类型将数字的格式从一种文化更改为另一种文化?

问题是:在英语中,数字是123.45.而在瑞典,这个数字将是123,45

有没有办法将123,45转换为123.45而不必将其转换为字符串(然后使用格式化方法)然后将其转换回正确的类型(单,双等)?

.net localization internationalization

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

如何防止窗口在jQuery slideToggle()上向上滚动?

我正在使用jQuery在页面加载时动态添加两个div.这一切都很好,除了当我单击第一个动态加载的div中的"高级选项"链接时 - 它执行它的正确行为(滑动第二个动态div),但它将窗口的滚动重置回顶部.我试图专注于我滑开的div的第一个输入元素,但无济于事.

如何摆脱这种不受欢迎的滚动行为?

我已经包含了帮助的代码(尽可能长的啰嗦)

<style type="text/css">
.itemcontainer {
    background-color:#FFFFCC;
    border:1px solid #999999;
    height:auto;
    margin:1em 0;
    overflow:hidden;
    position:relative;
    width:600px;
    }
.itemcontainer .optionpopoutcontainer {
    background-color:#44CC55;
    bottom:0;
    color:#333333;
    height:auto;
    left:0;
    padding:6px;
    position:absolute;
    width:100%;
}
.itemcontainer .advancedpopoutcontainer {}
</style>
Run Code Online (Sandbox Code Playgroud)

这里是javascript和HTML

    <script type="text/javascript">
    $(document).ready(function(){
        var counter = 0;
        //Add the necessary divs to the classes
        $(".itemcontainer").each(function(){
            var id = $(this).find("input[name='ItemID']").attr('value');
            $(this).append("<div class='optionpopoutcontainer' id='quickaddcontainer-" + id + "'></div><div class='advancedpopoutcontainer' id='advancedaddcontainer-" + id + "'></div>");
        });


            $(".optionpopoutcontainer").css("display", "none"); //used for the sliding up
        $(".optionpopoutcontainer").each(function(){ …
Run Code Online (Sandbox Code Playgroud)

jquery scroll

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

在Rails中抽象ActiveRecord模型查询的最佳实践?

我想从控制器中提取逻辑到可能更干的地方.在Rails中处理类似以下内容的最佳方法是什么?

例如,与在控制器中进行查询相反,我可以将其放在模型中:

class SmoothieBlender < ActiveRecord::Base
   belongs_to :user

   def self.get_blenders_for_user(user)
      self.where(["user_id = ?", user.id])
   end
end
Run Code Online (Sandbox Code Playgroud)

或者将模块创建为服务层并将其包含在使用它的每个模型中会更好吗?

module BlenderUser
   def get_blenders_for_user(user)
      SmoothieBlender.where(["user_id = ?", user.id])
   end
end

class SmoothieBlender < ActiveRecord::Base
   include BlenderUser
   belongs_to :user
end

class User < ActiveRecord::Base
   include BlenderUser
   has_many :smoothie_blenders
end
Run Code Online (Sandbox Code Playgroud)

或者只是让它成为一个完整的服务类,可以从User和Blender控制器访问?你会把这堂课放在哪里?

class BlenderService 
    def self.get_blenders_for_user(user)
       SmoothieBlender.where(["user_id = ?", user.id])
    end
end
Run Code Online (Sandbox Code Playgroud)

我是Ruby和Rails的新手,所以如果这是一个愚蠢的问题/语法不正确,请原谅我.提前致谢!

ruby activerecord abstraction ruby-on-rails controllers

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

顺序迁移:关系&lt;table&gt;不存在

我正在通过Author hasMany Books示例进行工作,并尝试运行sequelize-cli迁移,但是在运行以下迁移时遇到以下问题:

ERROR: relation "authors" does not exist
Run Code Online (Sandbox Code Playgroud)

这是创建作者的第一个迁移:

'use strict';
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('Authors', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      firstName: {
        type: Sequelize.STRING
      },
      lastName: {
        type: Sequelize.STRING
      },
      dateOfBirth: {
        type: Sequelize.DATEONLY
      },
      dateOfDeath: {
        type: Sequelize.DATEONLY
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('Authors');
  }
};
Run Code Online (Sandbox Code Playgroud)

第二次迁移创建一本书: …

postgresql sequelize.js sequelize-cli

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